Want to Become a Sponsor? Contact Us Now!🎉

langchain-tutorials
Utiliser Pinecone pour l'intégration d'une base de données vectorielles : guide étape par étape

Utiliser Pinecone pour l'intégration d'une base de données vectorielles : guide étape par étape

Published on

Intégration de Pinecone : guide étape par étape de l'intégration de la base de données vectorielles

Imaginez disposer d'un outil puissant vous permettant d'intégrer facilement des bases de données vectorielles à vos applications, permettant une récupération de documents efficace et des recherches de similarités. C'est là que Pinecone intervient. Pinecone est une base de données vectorielles avec des capacités d'intégration robustes, en faisant un atout précieux pour diverses applications. Dans cet article, nous explorerons comment utiliser Pinecone pour l'intégration d'une base de données vectorielles, étape par étape.

Résumé de l'article

  • Apprendre à utiliser Pinecone pour l'intégration d'une base de données vectorielles
  • Comprendre le processus étape par étape de l'insertion de documents, des recherches de similarités et de l'utilisation de la Maximal Marginal Relevance (MMR) pour la récupération de documents.
  • Explorer des bibliothèques et des ressources supplémentaires liées à Pinecone et Langchain.
Anakin AI - The Ultimate No-Code AI App Builder

Comment configurer l'intégration avec Pinecone

Pour commencer à intégrer Pinecone dans vos applications, vous aurez besoin d'une clé API. Cette clé est cruciale pour accéder aux fonctionnalités de Pinecone et garantir une communication sécurisée. Vous pouvez facilement obtenir une clé API en vous inscrivant sur le site web de Pinecone. Une fois que vous avez votre clé API, vous êtes prêt à procéder à l'installation.

Le site web de Pinecone fournit des instructions détaillées d'installation pour différentes plateformes, dont Linux, macOS et Windows. Suivez les instructions spécifiques à votre plateforme pour assurer un processus d'installation fluide. Il est important de noter que Pinecone prend en charge Python 3.6 et les versions supérieures.

Avant de continuer, il est essentiel de définir des variables d'environnement appropriées. Ces variables comprennent PINECONE_API_KEY et PINECONE_INDEX. En définissant correctement ces variables, vous garantissez une intégration sans faille avec Pinecone et évitez tout problème potentiel lors de l'exécution. Référez-vous à la documentation de Pinecone pour des instructions détaillées sur la configuration des variables d'environnement spécifiques à votre environnement de développement.

Découpage des documents textuels avec les bibliothèques Langchain

Lorsque l'on travaille avec des documents textuels, il est souvent bénéfique de les découper en des fragments plus petits pour une meilleure analyse et récupération. Les bibliothèques Langchain Community Document Loaders et Langchain Text Splitters offrent un moyen pratique d'accomplir cette tâche. Ces bibliothèques proposent différents chargeurs de documents et découpeurs de texte qui peuvent être utilisés en fonction de vos besoins spécifiques.

Pour découper un document textuel en fragments plus petits, commencez par installer les bibliothèques Langchain à l'aide de pip :

pip install langchain_community_document_loaders
pip install langchain_text_splitters

Une fois les bibliothèques installées, vous pouvez les utiliser dans votre code. Voici un exemple de découpage d'un document textuel en fragments plus petits à l'aide des bibliothèques Langchain :

from langchain_community_document_loaders import FileReader
from langchain_text_splitters import SentenceSplitter
 
file_path = "chemin/vers/votre/document.txt"
document_loader = FileReader(file_path)
text_splitters = SentenceSplitter()
 
for document in document_loader.load():
    for sentence in text_splitters.split(document['content']):
        print(sentence)

Dans cet exemple, nous instancions d'abord un objet FileReader avec le chemin vers notre document textuel. Ensuite, nous créons un objet SentenceSplitter. Nous itérons sur chaque document chargé depuis le fichier à l'aide de la méthode load() du chargeur de documents. Dans cette boucle, nous itérons sur chaque phrase obtenue en découpant le contenu du document à l'aide de la méthode split() du découpeur de texte. Enfin, nous affichons chaque phrase.

Encodage des fragments textuels avec OpenAIEmbeddings

Maintenant que nous avons obtenu nos fragments textuels en les découpant, l'étape suivante consiste à les encoder dans une représentation vectorielle. OpenAIEmbeddings est une bibliothèque qui nous permet d'encoder efficacement des fragments textuels à l'aide de modèles de langage pré-entraînés.

Pour utiliser OpenAIEmbeddings, vous devez installer la bibliothèque à l'aide de pip :

pip install OpenAIEmbeddings

Une fois la bibliothèque installée, vous pouvez l'utiliser pour encoder vos fragments textuels. Voici un exemple d'encodage des fragments textuels obtenus à l'étape précédente :

from OpenAIEmbeddings import OpenAIEmbeddings
 
text_chunks = ["Ceci est le premier fragment.", "Et ceci est le deuxième fragment."]
embeddings = OpenAIEmbeddings()
 
for chunk in text_chunks:
    embedding = embeddings.embed(chunk)
    print(embedding)

Dans cet exemple, nous créons un objet OpenAIEmbeddings. Nous itérons sur chaque fragment de texte dans la liste text_chunks et utilisons la méthode embed() de l'objet embeddings pour obtenir les encodages de chaque fragment. Enfin, nous affichons l'encodage.

L'encodage des fragments textuels est une étape cruciale dans la préparation des documents pour leur insertion dans Pinecone. Cela nous permet de représenter les documents dans un espace vectoriel, ce qui permet des recherches de similarités efficaces et la récupération de documents.

Insertion et recherche de documents dans Pinecone

Maintenant que nous avons encodé nos fragments textuels, il est temps de les insérer dans un index Pinecone et de réaliser des recherches de similarités. Voyons comment faire cela à l'aide du SDK Python de Pinecone.

Tout d'abord, connectons-nous à un index Pinecone en utilisant la méthode pinecone.init() et spécifions le nom de l'index. Voici un exemple :

import pinecone
 
pinecone.init(api_key="VOTRE_CLÉ_API")
index_name = "mon_index"
pinecone.create_index(index_name=index_name)
pinecone_index = pinecone.Index(index_name=index_name)

Dans cet exemple, nous initialisons Pinecone avec notre clé API, spécifions un nom d'index, créons l'index en utilisant pinecone.create_index() et instancions un objet pinecone.Index.

Pour insérer nos documents découpés dans l'index Pinecone, nous pouvons utiliser la méthode PineconeVectorStore.from_documents(). Voici un exemple :

documents = [{"content": "Ceci est le premier fragment."}, {"content": "Et ceci est le deuxième fragment."}]
pinecone_index.upsert_ids(ids=["document_1", "document_2"], vectors=embeddings, meta=documents)

Dans cet exemple, nous créons une liste de documents où chaque document est un dictionnaire contenant le content. Nous insérons les documents dans l'index en utilisant la méthode upsert_ids(), en spécifiant les IDs des documents, les vecteurs d'embedding et les métadonnées.

Pour effectuer une recherche de similarité sur les documents insérés, nous pouvons utiliser la méthode pinecone_index.query(). Voici un exemple :

query = "Ceci est une phrase de recherche."
retrieved_documents = pinecone_index.query(queries=[query], top_k=5)
for retrieved_document in retrieved_documents:
    print(retrieved_document['content'])

Dans cet exemple, nous spécifions une phrase de recherche et utilisons la méthode query() pour récupérer les 5 documents les plus similaires. Nous itérons sur les documents récupérés et affichons leur contenu.

Ajouter Plus de Texte à un Index Pinecone Existante

Si vous avez un index Pinecone existant et que vous souhaitez y ajouter du texte supplémentaire, vous pouvez utiliser la méthode add_texts() de PineconeVectorStore. Voici un exemple :

pinecone_index.add_texts(texts=["Plus de texte !"])

Dans cet exemple, nous ajoutons le texte "Plus de texte !" à l'index Pinecone existant en utilisant la méthode add_texts().

Effectuer des Recherches Maximal Marginal Relevance (MMR)

Pinecone prend également en charge les recherches Maximal Marginal Relevance (MMR), qui vous permettent de récupérer des documents pertinents en rapport avec une requête. Il existe deux méthodes pour effectuer des recherches MMR dans Pinecone : utiliser la recherche de similarité de l'objet retriever ou utiliser directement la fonction max_marginal_relevance_search().

Pour effectuer une recherche MMR en utilisant la recherche de similarité de l'objet retriever, voici un exemple :

retriever = pinecone_index.retriever()
mmr_retrieved_documents = retriever.similarity_search(query=query, top_k=5, diversity=0.5)
for retrieved_document in mmr_retrieved_documents:
    print(retrieved_document['content'])

Dans cet exemple, nous instancions un objet retriever en utilisant pinecone_index.retriever(). Nous utilisons ensuite la méthode similarity_search() de l'objet retriever pour effectuer la recherche MMR, en spécifiant la requête, les résultats top-k et le facteur de diversité. Enfin, nous itérons sur les documents récupérés et affichons leur contenu.

Alternativement, vous pouvez utiliser directement la fonction max_marginal_relevance_search() pour les recherches MMR. Voici un exemple :

mmr_retrieved_documents = pinecone.max_marginal_relevance_search(index_name=index_name, query=query, top_k=5, diversity=0.5)
for retrieved_document in mmr_retrieved_documents:
    print(retrieved_document['content'])

Dans cet exemple, nous utilisons la fonction max_marginal_relevance_search(), en spécifiant le nom de l'index, la requête, les résultats top-k et le facteur de diversité. Nous itérons sur les documents récupérés et affichons leur contenu.

Conclusion

Dans cet article, nous avons exploré le processus étape par étape de l'intégration de Pinecone dans vos applications. De l'obtention d'une clé API et de la configuration de l'environnement à la découpe des documents texte, à l'embedding des fragments de texte et à l'exécution de recherches de similarité, nous avons couvert les aspects essentiels de l'intégration de Pinecone. De plus, nous avons mis en évidence la possibilité d'ajouter plus de texte à un index Pinecone existant et l'utilisation de Maximal Marginal Relevance (MMR) pour la récupération de documents. En suivant les exemples et les instructions fournis, vous pouvez exploiter efficacement les capacités de Pinecone et améliorer l'efficacité de vos applications.

Pour plus d'informations et une documentation détaillée sur Pinecone, veuillez visiter le site web de Pinecone (opens in a new tab) et explorer les ressources disponibles. De plus, vous pouvez trouver d'autres bibliothèques et ressources précieuses relatives à Pinecone et Langchain sur leurs répertoires GitHub (opens in a new tab) et communauté Discord (opens in a new tab). Restez connecté avec les dernières mises à jour et engagez-vous avec la communauté via leurs plateformes de médias sociaux.

Maintenant que vous avez une compréhension solide de l'intégration de Pinecone dans vos applications, il est temps de tirer parti de la puissance des bases de données vectorielles et de révolutionner vos processus de récupération de documents. Bon codage !

langchain Pinecone

Insérer et Rechercher des Documents dans Pinecone

Maintenant que vous avez configuré l'intégration de Pinecone et préparé vos documents pour l'insertion, il est temps d'apprendre comment insérer et rechercher des documents dans Pinecone en utilisant Langchain. Voici comment vous pouvez le faire :

Insérer des Documents

Pour insérer des documents dans Pinecone, vous pouvez utiliser la méthode index.upsert(). À l'étape précédente, vous avez déjà créé l'objet index, vous pouvez donc l'utiliser pour l'insertion. Voici un exemple d'insertion de documents :

for batch in dataset.iter_documents(batch_size=100):
    index.upsert(batch)

Dans cet exemple, nous itérons sur les documents dans le jeu de données par lots de 100 et utilisons la méthode index.upsert() pour insérer chaque lot dans Pinecone. Ce processus garantit une insertion efficace de grandes quantités de données dans l'index.

Rechercher des Documents Similaires

Une fois que vous avez inséré les documents dans Pinecone, vous pouvez effectuer des recherches de similarité pour récupérer des documents similaires en fonction d'une requête. La méthode index.query() permet de rechercher des documents similaires à une requête donnée. Voici un exemple :

query = "Qui était Benito Mussolini ?"
 
results = index.query(queries=[query], top_k=5)

Dans cet exemple, nous recherchons des documents similaires à la requête "Qui était Benito Mussolini ?" en passant la requête sous forme de liste à la méthode index.query(). Le paramètre top_k spécifie le nombre de documents similaires à récupérer. La variable results contiendra les documents similaires les plus pertinents (top-k) ainsi que leurs métadonnées.

Utilisation de La Diffusion Stable pour la Récupération des Documents

Pinecone prend également en charge l'utilisation de la Diffusion Stable (MMR) pour la récupération des documents. MMR est une technique qui combine la pertinence et la diversité des résultats de recherche pour fournir des recommandations plus informatives et diversifiées.

Pour utiliser MMR dans Pinecone, vous pouvez utiliser la méthode index.mmr(). Voici un exemple :

query = "Qui était Benito Mussolini ?"
 
results = index.mmr(query=query, top_k=5, lambda_param=0.6, diversity_param=0.5)

Dans cet exemple, nous passons la requête, le nombre de documents similaires à récupérer (top_k), le lambda_param qui détermine le compromis entre pertinence et diversité, et le diversity_param qui contrôle la diversité des résultats.

En utilisant MMR, vous pouvez améliorer le processus de récupération des documents et obtenir un ensemble de recommandations plus informatives et diversifiées.

Bibliothèques et Ressources Supplémentaires

En plus de Pinecone et de Langchain, d'autres bibliothèques et ressources sont disponibles pour améliorer l'intégration de votre base de données vectorielle et le processus de récupération des documents. Voici quelques exemples :

  • Amazon Bedrock : Intégrez Pinecone à Amazon Bedrock pour construire des systèmes de recommandation évolutifs en temps réel.
  • Amazon SageMaker : Utilisez Pinecone avec Amazon SageMaker pour effectuer des recherches de similarité et améliorer l'entraînement des modèles.
  • Cohere : Combinez Pinecone avec Cohere pour construire des modèles linguistiques puissants et améliorer les capacités de récupération des documents.
  • Databricks : Intégrez Pinecone à Databricks pour tirer parti des puissantes capacités de traitement des données et d'analyse.
  • Datadog : Surveillez et analysez les performances de votre intégration Pinecone à l'aide de Datadog.
  • Elasticsearch : Associez Pinecone à Elasticsearch pour effectuer des recherches avancées et des analyses sur votre base de données vectorielle.

Ces bibliothèques et intégrations offrent une large gamme de capacités et d'options pour étendre les fonctionnalités de votre intégration de base de données vectorielle et de votre système de récupération des documents.

Conclusion

Dans cet article, vous avez appris comment intégrer Pinecone, une base de données vectorielle hautes performances, à Langchain, un framework pour construire des applications alimentées par de grands modèles linguistiques. Vous avez compris le processus étape par étape d'insertion de documents, d'effectuer des recherches de similarité et d'utiliser la diffusion stable maximale (MMR) pour la récupération des documents. De plus, vous avez exploré d'autres bibliothèques et ressources qui peuvent améliorer votre intégration et vos capacités de récupération des documents.

En combinant Pinecone et Langchain, vous pouvez construire des applications puissantes qui exploitent les capacités des bases de données vectorielles et des modèles linguistiques. Que vous construisiez des systèmes de recommandation, des chatbots, des systèmes de question-réponse ou des systèmes multi-agents, l'intégration de Pinecone et Langchain peut grandement améliorer les performances et les capacités de votre application.

Commencez dès aujourd'hui à explorer les possibilités de l'intégration Pinecone et Langchain et libérez tout le potentiel de vos applications !

Anakin AI - The Ultimate No-Code AI App Builder