{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "7290374f-d5b8-4670-b7fe-36a1293577ba", "metadata": {}, "outputs": [], "source": [ "from rank_bm25 import BM25Okapi\n", "import chromadb" ] }, { "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": 7, "id": "021e4cfa-49d9-460f-9b43-1524c327e4c6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['ids', 'embeddings', 'metadatas', 'documents', 'uris', 'data'])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.get().keys()" ] }, { "cell_type": "code", "execution_count": 8, "id": "5ae7d104-f8f6-45ad-a2af-b8475e400262", "metadata": {}, "outputs": [], "source": [ "docs = collection.get()['documents']" ] }, { "cell_type": "code", "execution_count": 25, "id": "96e8acca-e0dc-4dbd-9130-4f3ff64ba86a", "metadata": {}, "outputs": [], "source": [ "ids = collection.get()['ids']" ] }, { "cell_type": "code", "execution_count": 9, "id": "536f29fa-9377-41a8-a9d4-a52ace99ed74", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2896" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(docs)" ] }, { "cell_type": "code", "execution_count": 15, "id": "8cf9b3e2-c960-4a88-8974-848611a4d5d7", "metadata": {}, "outputs": [], "source": [ "docs_tokenized = [doc.replace(\"\\n\", \" \").split(\" \") for doc in docs]" ] }, { "cell_type": "code", "execution_count": 16, "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": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "docs_tokenized[0]" ] }, { "cell_type": "code", "execution_count": 17, "id": "0ba5858d-9cdb-4159-a9ab-88b485a8991b", "metadata": {}, "outputs": [], "source": [ "bm25_db = BM25Okapi(docs_tokenized)" ] }, { "cell_type": "code", "execution_count": 19, "id": "c854970c-6e40-4209-9e02-a7e4cb9fb509", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bm25_db" ] }, { "cell_type": "code", "execution_count": 20, "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": 21, "id": "8c362a7b-5d78-4ba5-be8f-165ca5e9e023", "metadata": {}, "outputs": [], "source": [ "query_tokenized = query.split(\" \")\n", "doc_scores = bm25_db.get_scores(query_tokenized)" ] }, { "cell_type": "code", "execution_count": 24, "id": "99c5cc3d-5b30-478d-b3b8-c252dff6e1fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2896" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(doc_scores)" ] }, { "cell_type": "code", "execution_count": 27, "id": "e5c91dd9-ebda-42ba-9ac8-d7fec2be981e", "metadata": {}, "outputs": [], "source": [ "ids_scores = dict(zip(ids, doc_scores))" ] }, { "cell_type": "code", "execution_count": 30, "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": 31, "id": "1964be5f-8ab7-437c-986c-d5ef8039748d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'d42d7174ce.html-1': 21.04962022219261,\n", " '25dcc77e00.html-6': 18.00344127762922,\n", " '19864d414b.html-1': 16.616167931951313}" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(sorted_ids_scores[:3])" ] }, { "cell_type": "code", "execution_count": 34, "id": "f0ff43ff-2cb1-47a7-aaaf-f9dbecd041ff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'ids': ['19864d414b.html-1', 'd42d7174ce.html-1', '25dcc77e00.html-6'],\n", " 'embeddings': None,\n", " 'metadatas': [{'category': 'professionnels',\n", " 'url': 'https://www.caisse-epargne.fr/rhone-alpes/professionnels/proteger-moi-mon-activite/numeros-utiles-contrat-assurance/'},\n", " {'category': 'assurer',\n", " 'url': 'https://www.caisse-epargne.fr/rhone-alpes/assurer/declaration-sinistre-intemperies/'},\n", " {'category': 'comptes-cartes',\n", " 'url': 'https://www.caisse-epargne.fr/rhone-alpes/comptes-cartes/carte-visa-premier/'}],\n", " 'documents': ['Numéros Utiles Contrat Assurance Professionnel\\n\\nVotre contrat Assurance Multirisque Professionnelle ou Assurance Auto des Professionnels\\n\\nUn numéro unique et non surtaxé est mis à votre disposition pour déclarer un sinistre ou mettre à jour votre contrat.Appelez-le\\xa0:\\nPour nous contacter par mail\\xa0:• Contrat Assurance Multirisque Professionnelle\\xa0:service-client.ird@aismail.fr• Contrat Assurance Auto des Professionnels\\xa0: service-client.auto@aismail.fr\\n',\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", " 'Carte Visa Premier\\n\\nEt si vous optiez pour la carte Visa Premier Izicarte associée à votre crédit renouvelable ?\\n\\nVotre 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.\\nVous choisissez librement le mode de règlement que vous souhaitez :\\nAu 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.\\nGrâ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.\\nUn crédit vous engage et doit être remboursé. Vérifiez vos capacités de remboursement avant de vous engager.'],\n", " 'uris': None,\n", " 'data': None}" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection.get(ids=['d42d7174ce.html-1', '25dcc77e00.html-6', '19864d414b.html-1'])" ] }, { "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 }