Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de DynamoDB avec LangChain
LangChainDynamoDBChatMessageHistory classe stocke l'historique des conversations afin qu'un modèle puisse converser avec un utilisateur d'une session à l'autre, et la DynamoDBVectorStore classe implémente l'interface de stockage LangChain vectoriel sur les index vectoriels DynamoDB pour la recherche de similarité.
Historique des messages de chat
La DynamoDBChatMessageHistory classe, dans le langchain-community package pour Python et le @langchain/community package pour JavaScript, conserve les messages de discussion dans une table DynamoDB. La classe attend une table existante dont la clé de partition est un attribut de chaîne nommé SessionId (configurable viaprimary_key_name). Créez le tableau à l'aide de la AWS CLI :
aws dynamodb create-table \ --table-name SessionTable \ --attribute-definitions AttributeName=SessionId,AttributeType=S \ --key-schema AttributeName=SessionId,KeyType=HASH \ --billing-mode PAY_PER_REQUEST
Installez les packages, puis lisez et écrivez l'historique saisi par un ID de session :
pip install langchain-community boto3
from langchain_community.chat_message_histories import DynamoDBChatMessageHistory history = DynamoDBChatMessageHistory( table_name="SessionTable", session_id="user-42", ) history.add_user_message("Hello!") history.add_ai_message("How can I help you today?") print(history.messages)
Les messages de chaque session de chat sont stockés sous la siennesession_id, de sorte que l'utilisateur qui revient reprend la conversation là où il s'est arrêtée. Le constructeur prend également en charge les clés composites pour isoler l'historique en fonction des détails de l'application, tels que l'ID utilisateur (key), le Live-based délai d'expiration des anciennes sessions (ttl) et le plafonnement des messages stockés (history_size). Pour l'API complète, consultez la référence Python
Boutique vectorielle soutenue par des index vectoriels
La DynamoDBVectorStore classe du langchain-aws package implémente l'interface de stockage LangChain vectoriel à l'aide des index vectoriels DynamoDB (voir). Utilisation d'index vectoriels dans DynamoDB Les documents sont stockés sous forme d'éléments DynamoDB classiques et recherchés via l'index vectoriel de la table à l'aide de l'SearchVectorsAPI. Les LangChain récupérateurs et les chaînes RAG effectuent donc des recherches de similarité directement sur la table contenant vos données.
Installez le package :
pip install langchain-aws boto3
Fournissez un nom de table et une fonction d'intégration. La table et l'index vectoriel sont créés lors de la première écriture s'ils n'existent pas :
from langchain_aws.embeddings import BedrockEmbeddings from langchain_aws.vectorstores.dynamodb import DynamoDBVectorStore vector_store = DynamoDBVectorStore.from_texts( ["hello", "developer", "wife"], embedding=BedrockEmbeddings(model_id="amazon.titan-embed-text-v2:0"), table_name="my-documents", ) docs = vector_store.similarity_search("greeting", k=2)
Pour définir la portée des recherches, passez la commande partition_attribute lorsque vous créez la boutique. L'index vectoriel est ensuite créé à l'aide d'une clé de partition du schéma de recherche sur ce champ de métadonnées du document, et chaque recherche n'examine qu'une seule valeur de celui-ci, telle qu'une collection, une catégorie ou un tenant, plutôt que l'ensemble du corpus. Chaque recherche fournit ensuite la valeur par le biais d'un magasin filter={partition_attribute: value} ou d'un magasindefault_partition_value. La clé de partition fait partie du schéma de l'index et ne peut pas être modifiée une fois l'index créé.
Gardez à l’esprit les points suivants :
-
À l'instar d'un index secondaire global, l'index vectoriel est finalement cohérent : une recherche lancée immédiatement après
add_textspeut ne pas inclure les documents qui viennent d'être écrits tant que l'index n'a pas rattrapé son retard. -
SearchVectorsrenvoie au maximum les 100 meilleurs résultats par requête, de sorte que lekparamètre du magasin est plafonné à 100. -
Les dimensions, la fonction de distance et le schéma de recherche de l'index sont fixés lors de la création. Le magasin les valide par rapport à un index existant plutôt que de procéder à une non-concordance.
Pour l'API complète, consultez le DynamoDBVectorStore référentiel langchain-aws.