rag/rag_bm25.ipynb

820 lines
30 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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",
" 'dun',\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 sils voyagent séparément.\\n• Tout déplacement ou séjour à une distance supérieure à 100 km de la résidence principale de lAssuré 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 dassistance 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 sils voyagent séparément.\\nLes garanties dassistance sappliquent dans le monde entier :\\n\\n• Il ny 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 durgence.\\nPour faire une demande dAssistance en ligne et pour connaître les services dAssistance 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 lindemnisation\\nEn cas dévénement climatique, le besoin dassistance ou de prise en charge est immédiat\\xa0!Cest pourquoi la Caisse dEpargne vous facilite la déclaration de sinistre grâce à votre espace personnel internet. Si vous êtes détenteur dun contrat dassurance 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 dEpargne 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 sils voyagent séparément.\\n• Tout déplacement ou séjour à une distance supérieure à 100 km de la résidence principale de lAssuré 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 dassistance 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 sils voyagent séparément.\\nLes garanties dassistance sappliquent dans le monde entier :\\n\\n• Il ny 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 durgence.\\nPour faire une demande dAssistance en ligne et pour connaître les services dAssistance 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 dAssurances 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 dune 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 dAssurances et dAssistance 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 daccident, 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 dindemnisation auprès de la compagnie aérienne. Sajoute à lindemnité de retard, le remboursement des frais engagés durant lattente (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 dutilisation frauduleuse de la carte ;\n",
"\n",
"----------\n",
"\n",
"Carte Visa Premier\n",
"\n",
"Bénéficiez davantages 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: cest lencours des paiements par carte. Le suivi de cet encours peut se faire à tout moment via la banque à distance (internet et mobile) et permet danticiper 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 nest affectée des paiements par carte quune 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 dachat 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 dun 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",
"LExtension 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 dune 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 lapplication Caisse dEpargne 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 dutilisation 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 à lautorisation du conseil dadministration de la SLE, doit être formulée avant le 31 mai, date de clôture de lexercice. 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 quils pourraient ne pas être en mesure de céder facilement leurs parts sociales.\\n\\nLe remboursement effectif, quil 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 dEpargne daffiliation, redressement judiciaire du sociétaire, de clôture dun livret A lorsque le client ne détient pas dautres produits et tout évènement exceptionnel revêtant une gravité telle quelle 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é dinvestisseur 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 dEpargne (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 lapport, 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 dEpargne 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 nest 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
}