{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "7290374f-d5b8-4670-b7fe-36a1293577ba", "metadata": {}, "outputs": [], "source": [ "from rank_bm25 import BM25Okapi\n", "import chromadb\n", "import spacy" ] }, { "cell_type": "code", "execution_count": 2, "id": "617ec7ec-0f30-402d-8e45-dc1f762d1409", "metadata": {}, "outputs": [], "source": [ "chromadb_path = './chromadb'\n", "collection_name = 'cera'\n", "chroma_client = chromadb.PersistentClient(path=chromadb_path)\n", "collection = chroma_client.get_collection(name=collection_name)" ] }, { "cell_type": "code", "execution_count": 3, "id": "021e4cfa-49d9-460f-9b43-1524c327e4c6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['ids', 'embeddings', 'metadatas', 'documents', 'uris', 'data'])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.get().keys()" ] }, { "cell_type": "code", "execution_count": 4, "id": "5ae7d104-f8f6-45ad-a2af-b8475e400262", "metadata": {}, "outputs": [], "source": [ "docs = collection.get()['documents']" ] }, { "cell_type": "code", "execution_count": 5, "id": "96e8acca-e0dc-4dbd-9130-4f3ff64ba86a", "metadata": {}, "outputs": [], "source": [ "ids = collection.get()['ids']" ] }, { "cell_type": "code", "execution_count": 6, "id": "536f29fa-9377-41a8-a9d4-a52ace99ed74", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2896" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(docs)" ] }, { "cell_type": "code", "execution_count": 7, "id": "8cf9b3e2-c960-4a88-8974-848611a4d5d7", "metadata": {}, "outputs": [], "source": [ "docs_tokenized = [doc.replace(\"\\n\", \" \").split(\" \") for doc in docs]" ] }, { "cell_type": "code", "execution_count": 8, "id": "87085da2-edac-4e9c-8586-1139ac814dcd", "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true } }, "outputs": [ { "data": { "text/plain": [ "['Le',\n", " 'paiement',\n", " 'sans',\n", " 'contact',\n", " '',\n", " 'Les',\n", " 'points',\n", " 'clés',\n", " '',\n", " 'Pratique',\n", " 'Plus',\n", " 'besoin',\n", " 'de',\n", " 'chercher',\n", " 'de',\n", " 'la',\n", " 'monnaie',\n", " 'pour',\n", " 'régler',\n", " 'votre',\n", " 'café,',\n", " 'parking,',\n", " 'repas,',\n", " 'journal…',\n", " 'Gratuit',\n", " 'Cette',\n", " 'fonctionnalité',\n", " 'est',\n", " 'ajoutée',\n", " 'automatiquement',\n", " 'et',\n", " 'gratuitement',\n", " 'à',\n", " 'votre',\n", " 'carte.',\n", " 'Rapide',\n", " 'Vous',\n", " 'réglez',\n", " 'votre',\n", " 'achat',\n", " 'd’un',\n", " 'simple',\n", " 'geste,',\n", " 'sans',\n", " 'insérer',\n", " 'votre',\n", " 'carte',\n", " 'ni',\n", " 'composer',\n", " 'votre',\n", " 'code',\n", " 'confidentiel.']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "docs_tokenized[0]" ] }, { "cell_type": "code", "execution_count": 9, "id": "8e0ece14-bee4-4842-a010-7f8016fbf09d", "metadata": {}, "outputs": [], "source": [ "nlp = spacy.load('fr_core_news_md')" ] }, { "cell_type": "code", "execution_count": 29, "id": "f68969e6-2fc7-45a7-b920-3790cd05ad5e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Le le DET O \n", "paiement paiement NOUN O \n", "sans sans ADP O \n", "contact contact NOUN O \n", "\n", "\n", " \n", "\n", " SPACE O \n", "Les le DET O \n", "points point NOUN O \n", "clés clé ADJ O \n", "\n", "\n", " \n", "\n", " SPACE O \n", "Pratique pratique NOUN B MISC\n", "Plus plus ADV I MISC\n", "besoin besoin NOUN O \n", "de de ADP O \n", "chercher chercher VERB O \n", "de de ADP O \n", "la le DET O \n", "monnaie monnaie NOUN O \n", "pour pour ADP O \n", "régler régler VERB O \n", "votre votre DET O \n", "café café NOUN O \n", ", , PUNCT O \n", "parking parking NOUN O \n", ", , PUNCT O \n", "repas repas NOUN O \n", ", , PUNCT O \n", "journal journal NOUN O \n", "… … PUNCT O \n", "\n", " \n", " SPACE O \n", "Gratuit gratuit NOUN B MISC\n", "Cette ce DET O \n", "fonctionnalité fonctionnalité NOUN O \n", "est être AUX O \n", "ajoutée ajouter VERB O \n", "automatiquement automatiquement ADV O \n", "et et CCONJ O \n", "gratuitement gratuitement NOUN O \n", "à à ADP O \n", "votre votre DET O \n", "carte carte NOUN O \n", ". . PUNCT O \n", "\n", " \n", " SPACE O \n", "Rapide rapide NOUN B MISC\n", "Vous vous PRON I MISC\n", "réglez régler VERB I MISC\n", "votre votre DET I MISC\n", "achat achat NOUN I MISC\n", "d’ d’ ADP I MISC\n", "un un DET I MISC\n", "simple simple ADJ I MISC\n", "geste geste NOUN I MISC\n", ", , PUNCT O \n", "sans sans ADP O \n", "insérer insérer VERB O \n", "votre votre DET O \n", "carte carte NOUN O \n", "ni ni CCONJ O \n", "composer composer VERB O \n", "votre votre DET O \n", "code code NOUN O \n", "confidentiel confidentiel ADJ O \n", ". . PUNCT O \n" ] } ], "source": [ "for tok in nlp(docs[0]):\n", " print(tok, tok.lemma_, tok.pos_, tok.ent_iob_, tok.ent_type_)" ] }, { "cell_type": "code", "execution_count": 32, "id": "0ae7033e-2f7e-4076-ba15-1c569bbe7cec", "metadata": {}, "outputs": [], "source": [ "def keep_token(tok):\n", " return tok.pos_ == 'NOUN' or tok.pos_ == 'VERB' or \\\n", " tok.pos_ == 'PROPN' or tok.pos_ == 'ADJ'" ] }, { "cell_type": "code", "execution_count": 33, "id": "dfb71f32-8b13-44d0-a686-4f45fc21aaf6", "metadata": {}, "outputs": [], "source": [ "def lemmatize(str):\n", " res = []\n", " for tok in nlp(str):\n", " if keep_token(tok):\n", " res.append(tok.lemma_)\n", " return res" ] }, { "cell_type": "code", "execution_count": 34, "id": "8c290d03-4c05-4770-87f3-d5766e34bf7a", "metadata": {}, "outputs": [], "source": [ "docs_tokenized = []\n", "for doc in docs:\n", " toks = lemmatize(doc)\n", " if len(toks)>0: docs_tokenized.append(toks)" ] }, { "cell_type": "code", "execution_count": 35, "id": "0ba5858d-9cdb-4159-a9ab-88b485a8991b", "metadata": {}, "outputs": [], "source": [ "bm25_db = BM25Okapi(docs_tokenized)" ] }, { "cell_type": "code", "execution_count": 36, "id": "61d10ce1-38fe-4d36-b8c6-1845c116b626", "metadata": {}, "outputs": [], "source": [ "query = \"Comment procéder pour déclarer un sinistre Visa Premier ?\"" ] }, { "cell_type": "code", "execution_count": 37, "id": "49479a83-d401-41ce-9172-99117a3c0753", "metadata": {}, "outputs": [], "source": [ "query_toks = lemmatize(query)" ] }, { "cell_type": "code", "execution_count": 38, "id": "4eac99f8-347f-424a-ba27-81beba5c2f8c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['procéder', 'déclarer', 'sinistre', 'Visa', 'premier']" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "query_toks" ] }, { "cell_type": "code", "execution_count": 39, "id": "8c362a7b-5d78-4ba5-be8f-165ca5e9e023", "metadata": {}, "outputs": [], "source": [ "# query_tokenized = query.split(\" \")\n", "doc_scores = bm25_db.get_scores(query_toks)" ] }, { "cell_type": "code", "execution_count": 40, "id": "99c5cc3d-5b30-478d-b3b8-c252dff6e1fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2896" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(doc_scores)" ] }, { "cell_type": "code", "execution_count": 41, "id": "e5c91dd9-ebda-42ba-9ac8-d7fec2be981e", "metadata": {}, "outputs": [], "source": [ "ids_scores = dict(zip(ids, doc_scores))" ] }, { "cell_type": "code", "execution_count": 42, "id": "5865d7f6-f10d-4c08-873d-89ae60059008", "metadata": {}, "outputs": [], "source": [ "sorted_ids_scores = sorted(ids_scores.items(), key=lambda x: x[1], reverse=True)" ] }, { "cell_type": "code", "execution_count": 43, "id": "1964be5f-8ab7-437c-986c-d5ef8039748d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'d42d7174ce.html-1': 18.401661345931544,\n", " 'c98558432b.html-2': 16.991284762126078,\n", " 'd42d7174ce.html-2': 13.443119955565379}" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(sorted_ids_scores[:3])" ] }, { "cell_type": "code", "execution_count": 57, "id": "2f4eadd8-b25e-4cf3-8540-3283f50144a7", "metadata": {}, "outputs": [], "source": [ "def size_query_inter_doc(query_str, doc_id):\n", " query_toks = lemmatize(query_str)\n", " doc_toks = lemmatize(collection.get(ids=[doc_id])['documents'][0])\n", " return len(set(query_toks) & set(doc_toks))" ] }, { "cell_type": "code", "execution_count": 59, "id": "c1f3fc8f-153b-4138-b5f0-393f29589d44", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size_query_inter_doc(query, 'd42d7174ce.html-1')" ] }, { "cell_type": "code", "execution_count": 54, "id": "3113b8d6-c2e8-4930-b7e2-13ddd59d6897", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Visa', 'déclarer', 'premier', 'sinistre'}" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set(query_toks) & set(lemmatize(collection.get(ids=['c98558432b.html-2'])['documents'][0]))" ] }, { "cell_type": "code", "execution_count": 55, "id": "c5bc2d06-bdcf-4476-a029-c27285dd30c9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'déclarer', 'procéder', 'sinistre'}" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set(query_toks) & set(lemmatize(collection.get(ids=['d42d7174ce.html-1'])['documents'][0]))" ] }, { "cell_type": "code", "execution_count": 56, "id": "341d8c95-cd0d-4cb3-b279-6f9230ceae4c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'déclarer', 'sinistre'}" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set(query_toks) & set(lemmatize(collection.get(ids=['d42d7174ce.html-2'])['documents'][0]))" ] }, { "cell_type": "code", "execution_count": 47, "id": "f0ff43ff-2cb1-47a7-aaaf-f9dbecd041ff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'ids': ['c98558432b.html-2', 'd42d7174ce.html-1', 'd42d7174ce.html-2'],\n", " 'embeddings': None,\n", " 'metadatas': [{'category': 'comptes-cartes',\n", " 'url': 'https://www.caisse-epargne.fr/rhone-alpes/comptes-cartes/garanties-assurances-et-assistances-des-cartes-visa/'},\n", " {'category': 'assurer',\n", " 'url': 'https://www.caisse-epargne.fr/rhone-alpes/assurer/declaration-sinistre-intemperies/'},\n", " {'category': 'assurer',\n", " 'url': 'https://www.caisse-epargne.fr/rhone-alpes/assurer/declaration-sinistre-intemperies/'}],\n", " 'documents': ['Garanties Assurances et Assistance des cartes Visa\\n\\nGaranties Assurances et Assistance des cartes Visa\\n\\n• La déclaration de sinistre doit être faite dans les 15 jours suivant la date à laquelle a eu lieu le sinistre ;\\n\\n• Les indemnisations interviennent a posteriori du sinistre sur présentation de justificatifs.\\nLe porteur de la Carte Visa, ainsi que son conjoint ou concubin vivant sous le même toit et ses enfants célibataires de moins de 25 ans fiscalement à sa charge, même s’ils voyagent séparément.\\n• Tout déplacement ou séjour à une distance supérieure à 100 km de la résidence principale de l’Assuré ou de son lieu de travail habituel, dans la limite des 180 premiers jours consécutifs ;\\n\\n• Sans franchise kilométrique pour la Garantie Neige et Montagne.\\nPour déclarer un sinistre, vous devez vous rendre sur le site :\\nLes garanties d’assistance sont valables toute la durée du séjour/déplacement dans la limite de 90 jours.\\nLe porteur de la Carte Visa, ainsi que son conjoint ou concubin vivant sous le même toit et ses enfants célibataires de moins de 25 ans fiscalement à sa charge, même s’ils voyagent séparément.\\nLes garanties d’assistance s’appliquent dans le monde entier :\\n\\n• Il n’y a pas de franchise kilométrique si l’événement est survenu en dehors du pays de résidence ;\\n\\n• Si l’événement est survenu dans le pays de résidence, la franchise kilométrique est de 100 km ;\\n\\n• Lors de tout déplacement privé ou professionnel ;\\n\\n• Elles ne se substituent pas aux organismes locaux de secours d’urgence.\\nPour faire une demande d’Assistance en ligne et pour connaître les services d’Assistance liés à votre carte Visa ou demander une attestation, rendez-vous sur le site.',\n", " 'Intempéries, déclarer son sinistre en ligne !\\n\\nEn bref\\n\\nDécouvrez comment déclarer votre sinistre en ligne\\nLes conseils en cas de sinistre\\nTout savoir sur l’indemnisation\\nEn cas d’événement climatique, le besoin d’assistance ou de prise en charge est immédiat\\xa0!C’est pourquoi la Caisse d’Epargne vous facilite la déclaration de sinistre grâce à votre espace personnel internet. Si vous êtes détenteur d’un contrat d’assurance habitation ou automobile, il vous suffit de vous connecter à votre espace personnel et de procéder à la déclaration en ligne.',\n", " 'Intempéries, déclarer son sinistre en ligne !\\n\\nDepuis votre application mobile\\n\\nOuvrez votre application Caisse d’Epargne puis saisissez votre identifiant\\xa0et votre code confidentiel\\nCliquez sur la rubrique « Assurance »\\nSélectionnez votre contrat et cliquez sur\\xa0« Déclarer un sinistre »'],\n", " 'uris': None,\n", " 'data': None}" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.get(ids=list(dict(sorted_ids_scores[:3]).keys()))" ] }, { "cell_type": "code", "execution_count": 70, "id": "0125c4f3-63ef-4499-9dbd-043b943098d4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'• La déclaration de sinistre doit être faite dans les 15 jours suivant la date à laquelle a eu lieu le sinistre ;\\n\\n• Les indemnisations interviennent a posteriori du sinistre sur présentation de justificatifs.\\nLe porteur de la Carte Visa, ainsi que son conjoint ou concubin vivant sous le même toit et ses enfants célibataires de moins de 25 ans fiscalement à sa charge, même s’ils voyagent séparément.\\n• Tout déplacement ou séjour à une distance supérieure à 100 km de la résidence principale de l’Assuré ou de son lieu de travail habituel, dans la limite des 180 premiers jours consécutifs ;\\n\\n• Sans franchise kilométrique pour la Garantie Neige et Montagne.\\nPour déclarer un sinistre, vous devez vous rendre sur le site :\\nLes garanties d’assistance sont valables toute la durée du séjour/déplacement dans la limite de 90 jours.\\nLe porteur de la Carte Visa, ainsi que son conjoint ou concubin vivant sous le même toit et ses enfants célibataires de moins de 25 ans fiscalement à sa charge, même s’ils voyagent séparément.\\nLes garanties d’assistance s’appliquent dans le monde entier :\\n\\n• Il n’y a pas de franchise kilométrique si l’événement est survenu en dehors du pays de résidence ;\\n\\n• Si l’événement est survenu dans le pays de résidence, la franchise kilométrique est de 100 km ;\\n\\n• Lors de tout déplacement privé ou professionnel ;\\n\\n• Elles ne se substituent pas aux organismes locaux de secours d’urgence.\\nPour faire une demande d’Assistance en ligne et pour connaître les services d’Assistance liés à votre carte Visa ou demander une attestation, rendez-vous sur le site.'" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'\\n\\n'.join((collection.get(ids=['c98558432b.html-2'])['documents'][0]).split('\\n\\n')[2:])" ] }, { "cell_type": "code", "execution_count": 35, "id": "11a9a24e-3928-4b0b-85fe-d9c406fa80ed", "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Carte Visa Premier\n", "\n", "Les points clés\n", "\n", "Innovation Paiement sans contact(1) et paiement mobile compatible(2).\n", "Garanties d’Assurances et Assistance(3) Vous vous protégez ainsi que votre famille lors de vos déplacements en France et à l’étranger.\n", "Plafonds élevés Bénéficiez de souplesse grâce à des plafonds de paiement et retraits supérieurs à ceux d’une Visa Classic.\n", "\n", "----------\n", "\n", "Carte Visa Premier\n", "\n", "Carte Visa Premier, toujours à vos côtés\n", "\n", "Carte de paiement et de retrait utilisable en France et à l’étranger ;\n", "Des plafonds de paiement et de retrait élevés ;\n", "Des Garanties d’Assurances et d’Assistance incluses pour vous protéger, vous et votre famille, lors de vos déplacements en France et à l’étranger (une couverture assurances et assistance médicale dès que vous être à plus de 100kms de votre domicile);– Exemples de garanties :En voyage : modification ou annulation de voyage, responsabilité civile, rapatriement en cas de maladie ou d’accident, remboursement des frais médicaux à l’étranger, etc.Au ski : remboursement des frais médicaux en France, forfait et cours de ski non utilisésAvec un véhicule de location : accident ou volEn avion ou en train : perte, vol ou détérioration de bagages, etc.\n", "Un service de dépannage cash sous 48h à l’étranger ;\n", "Un retard ou une annulation de votre vol ? Votre accès à bord vous est refusé pour cause de surbooking ? AirRefund (partenaire de Visa), gère à votre place la demande d’indemnisation auprès de la compagnie aérienne. S’ajoute à l’indemnité de retard, le remboursement des frais engagés durant l’attente (repas, transferts, hôtels…)\n", "Un service de mise en opposition de la carte 24h/24 et 7j/7, en cas de perte, de vol ou d’utilisation frauduleuse de la carte ;\n", "\n", "----------\n", "\n", "Carte Visa Premier\n", "\n", "Bénéficiez d’avantages supplémentaires\n", "\n", "Fonctionne en Sans Contact ;\n", "Compatible paiement mobile ;\n", "Choix possible entre débit différé ou débit immédiat ;\n", "Disponible avec un crédit avec la carte Visa Premier Izicarte associée au crédit renouvelable.\n", "Les paiements par carte sont rassemblés, et débités en une seule fois tous les mois à date fixe: c’est l’encours des paiements par carte. Le suivi de cet encours peut se faire à tout moment via la banque à distance (internet et mobile) et permet d’anticiper la provision nécessaire sur le compte.\n", "Le débit différé peut permettre une gestion mensuelle de son budget différente de celle en débit immédiat, puisque la trésorerie disponible sur le compte n’est affectée des paiements par carte qu’une fois par mois.\n", "\n", "Il est ainsi possible de gérer différemment les frais qui seront remboursés (frais médicaux, frais professionnels … ), ainsi que les dépenses importantes.\n", "Certaines agences de location de voiture à l’étranger préfèrent les cartes avec la mention « crédit », aux cartes marquées uniquement « débit ». Les cartes à débit différé comportent la mention « crédit ».\n", "\n", "----------\n", "\n", "Carte Visa Premier\n", "\n", "Profitez des avantages Visa Premier(10)\n", "\n", "Pour en savoir plus sur les avantages dédiés aux porteurs de la carte Visa Premier, rendez-vous sur le site www.visa.fr et inscrivez-vous à la newsletter.\n", "\n", "----------\n", "\n", "Carte Visa Premier\n", "\n", "Bénéficiez de la garantie achat(11)\n", "\n", "Tous les achats réglés avec votre carte Visa Premier sont protégés contre la détérioration et le vol avec effraction ou par agression.La couverture s’élève au maximum à la valeur d’achat du bien.\n", "Valeur du bien : entre 75 € et 800 € TTC.\n", "Nombre de jours couverts (post acquisition/livraison) : 7 jours.\n", "Plafond de la garantie : 800 euros TTC par objet et 1 600 euros par an.\n", "\n", "----------\n", "\n", "Carte Visa Premier\n", "\n", "Et si vous optiez pour la carte Visa Premier Izicarte associée à votre crédit renouvelable ?\n", "\n", "Votre carte Visa Premier Izicarte vous permet de disposer d’un crédit renouvelable pour faire face à des imprévus ou saisir des opportunités sans perdre de temps.\n", "Vous choisissez librement le mode de règlement que vous souhaitez :\n", "Au comptant : par débit de votre compte de dépôt ;\n", "À crédit, dans la limite du montant disponible sur votre crédit renouvelable.\n", "Grâce à votre crédit renouvelable associé à votre carte Visa Premier Izicarte, vous pouvez étaler en plusieurs fois vos dépenses à crédit et choisir votre rythme de remboursement.\n", "Un crédit vous engage et doit être remboursé. Vérifiez vos capacités de remboursement avant de vous engager.\n", "\n", "----------\n", "\n", "Carte Visa Premier\n", "\n", "L’Extension de Garantie Constructeur(11) (12)\n", "\n", "Une garantie constructeur allongée\n", "Avec votre carte Visa Premier Izicarte, vous bénéficiez en cas de panne d’une extension de garantie constructeur supplémentaire de 3 ans, sur les appareils électrodomestiques et produits nomades achetés neufs(11) (12) (électroménager, audiovisuel, pocket/image, informatique).\n", "\n", "----------\n", "\n", "Carte Visa Premier\n", "\n", "Gérez votre carte bancaire depuis l’application Caisse d’Epargne Rhône Alpes\n", "\n", "Gérez vos plafonds ;\n", "Verrouillez temporairement/déverrouillez votre carte ;\n", "Activez/désactivez les paiements et retraits à distance et/ou à l’étranger ;\n", "Faites opposition 24h/24-7j/7 en cas de perte, de vol ou d’utilisation frauduleuse de votre carte.\n", "\n", "----------\n", "\n" ] } ], "source": [ "nb_passage = 1\n", "while True:\n", " id = \"25dcc77e00.html-\" + str(nb_passage)\n", " passages = collection.get(ids=[id])\n", " if len(passages['documents']) > 0:\n", " print(passages['documents'][0])\n", " print(\"\\n----------\\n\")\n", " nb_passage += 1\n", " else:\n", " break" ] }, { "cell_type": "code", "execution_count": 52, "id": "427a2fa0-0f47-4571-94d8-3878ca034de4", "metadata": {}, "outputs": [], "source": [ "query = \"Quel est le risque de perte en capital pour un sociétaire ?\"\n", "query_tokenized = query.split(\" \")\n", "doc_scores = bm25_db.get_scores(query_tokenized)\n", "ids_scores = dict(zip(ids, doc_scores))\n", "sorted_ids_scores = sorted(ids_scores.items(), key=lambda x: x[1], reverse=True)" ] }, { "cell_type": "code", "execution_count": 53, "id": "5251aa60-3831-416f-a7c6-f824c308587e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('f6d921ced8.html-3', 29.446670121305353),\n", " ('ff83960e9d.html-1', 24.88880087849239),\n", " ('ecb10d12cf.html-2', 24.206423694569803),\n", " ('f753c94bb4.html-1', 24.009169917059968),\n", " ('dbdc338e94.html-7', 23.845667609823003),\n", " ('f66629c8b6.html-2', 23.779561367699497),\n", " ('9b9d084514.html-2', 23.770317569985096),\n", " ('6123ccc4f8.html-6', 23.732579312988157),\n", " ('c145d2aa96.html-4', 23.48215739435705),\n", " ('286a391488.html-2', 23.443469979811134)]" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted_ids_scores[:10]" ] }, { "cell_type": "code", "execution_count": 51, "id": "b16129c2-e3fa-41ca-a60f-b5f596ede1f0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'ids': ['f6d921ced8.html-3'],\n", " 'embeddings': None,\n", " 'metadatas': [{'category': 'votre-banque',\n", " 'url': 'https://www.caisse-epargne.fr/rhone-alpes/votre-banque/nos-engagements/etre-societaire/'}],\n", " 'documents': ['Devenez sociétaire !\\n\\nQui peut devenir sociétaire ?\\n\\nSi vous souhaitez que la SLE rachète vos parts sociales, votre demande, soumise à l’autorisation du conseil d’administration de la SLE, doit être formulée avant le 31 mai, date de clôture de l’exercice. De ce fait, aucune assurance ne peut être donnée quant à la liquidité des parts sociales.\\n\\nPar ailleurs, les rachats de parts sociales sont subordonnés au respect du capital minimum en deçà duquel la SLE ne peut descendre. En conséquence, les sociétaires doivent être conscients qu’ils pourraient ne pas être en mesure de céder facilement leurs parts sociales.\\n\\nLe remboursement effectif, qu’il soit consécutif à la perte de la qualité de sociétaire ou à une demande de rachat, intervient le 1er jour ouvré du nouvel exercice ou dans un délai maximum de 3 mois suivant la demande pour les cas dérogatoires suivants :\\n\\n– Pour un particulier : changement de foyer fiscal, décès, divorce, invalidité, licenciement, départ à la retraite ou préretraite, transfert du domicile à l’étranger, déménagement hors du ressort territorial de la Caisse d’Epargne d’affiliation, redressement judiciaire du sociétaire, de clôture d’un livret A lorsque le client ne détient pas d’autres produits et tout évènement exceptionnel revêtant une gravité telle qu’elle contraigne le sociétaire à liquider tout ou partie de ses parts.\\n\\n– Pour une personne morale : redressement judiciaire, liquidation ou dissolution.\\n\\nLes parts sociales sont remboursées à leur valeur nominale sous réserve du risque investisseur (cf. paragraphe « Responsabilité – risque de perte en capital »)\\nVotre responsabilité d’investisseur est limitée au niveau de votre investissement. Le risque investisseur (risque de perte en capital) porte sur le Groupe BPCE et non sur la SLE ou la Caisse d’Epargne (du fait du mécanisme de solidarité interne au Groupe BPCE).\\n\\nLes parts sociales demeurent des instruments risqués. Votre responsabilité, limitée au montant de l’apport, est engagée jusqu’à 5 ans après le retrait. Il existe un risque de perte en capital en cas de défaut ou de faillite de la Caisse d’Epargne ou de mise en œuvre de mesures de résolution au sein du Groupe BPCE. Les parts sociales ne sont pas éligibles au mécanisme de garantie des investisseurs ou de garantie des déposants et leur rémunération n’est pas garantie.'],\n", " 'uris': None,\n", " 'data': None}" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.get(ids=['f6d921ced8.html-3'])" ] }, { "cell_type": "code", "execution_count": null, "id": "d5b1969b-6b87-40c9-8a69-ef4dc1c14c30", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "RAG_ENV", "language": "python", "name": "rag_env" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.18" } }, "nbformat": 4, "nbformat_minor": 5 }