View a markdown version of this page

Usare DynamoDB con LangChain - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usare DynamoDB con LangChain

LangChainè un framework per la creazione di applicazioni con modelli linguistici di grandi dimensioni (LLM). Due LangChain integrazioni utilizzano DynamoDB: la DynamoDBChatMessageHistory classe memorizza la cronologia delle conversazioni in modo che un modello possa conversare avanti e indietro con un utente tra le sessioni, e la DynamoDBVectorStore classe implementa l'interfaccia LangChain vector store sugli indici vettoriali DynamoDB per la ricerca di similarità.

Cronologia dei messaggi di chat

La DynamoDBChatMessageHistory classe, nel langchain-community pacchetto per Python e nel @langchain/community pacchetto per JavaScript, mantiene i messaggi di chat in una tabella DynamoDB. La classe si aspetta una tabella esistente la cui chiave di partizione è un attributo di stringa denominato (configurabile tramite). SessionId primary_key_name Crea la tabella con la CLI: AWS

aws dynamodb create-table \ --table-name SessionTable \ --attribute-definitions AttributeName=SessionId,AttributeType=S \ --key-schema AttributeName=SessionId,KeyType=HASH \ --billing-mode PAY_PER_REQUEST

Installa i pacchetti, quindi leggi e scrivi la cronologia digitata da un ID di sessione:

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)

I messaggi di ogni sessione di chat sono memorizzati al suo internosession_id, in modo che l'utente che ritorna riprenda la conversazione da dove l'aveva interrotta. Il costruttore supporta anche chiavi composite per isolare la cronologia in base ai dettagli dell'applicazione, come l'ID utente (key), il tempo di Live-based scadenza delle vecchie sessioni (ttl) e un limite massimo per i messaggi memorizzati (). history_size Per l'API completa, vedi il riferimento Python e il riferimento. JavaScript

Archivio vettoriale supportato da indici vettoriali

La DynamoDBVectorStore classe, nel langchain-aws pacchetto, implementa l'interfaccia LangChain vector store utilizzando gli indici vettoriali DynamoDB (vedi). Utilizzo degli indici vettoriali in DynamoDB I documenti vengono archiviati come normali elementi DynamoDB e ricercati tramite l'indice vettoriale della tabella con l'SearchVectorsAPI, quindi i LangChain retriever e le catene RAG eseguono ricerche di similarità direttamente sulla tabella che contiene i dati.

Installare il pacchetto :

pip install langchain-aws boto3

Fornisci un nome per la tabella e una funzione di incorporamento. La tabella e l'indice vettoriale vengono creati alla prima scrittura se non esistono:

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)

Per definire l'ambito delle ricerche, passa partition_attribute quando costruisci il negozio. L'indice vettoriale viene quindi creato con una chiave di partizione dello schema di ricerca nel campo dei metadati del documento e ogni ricerca ne esamina solo un valore, ad esempio una raccolta, una categoria o un tenant, anziché l'intero corpus. Ogni ricerca fornisce quindi il valore tramite o a livello di archivio. filter={partition_attribute: value} default_partition_value La chiave di partizione fa parte dello schema dell'indice e non può essere modificata dopo la creazione dell'indice.

Ricorda quanto segue:

  • Come un indice secondario globale, l'indice vettoriale alla fine è coerente: una ricerca effettuata subito dopo add_texts potrebbe non includere i documenti appena scritti finché l'indice non recupera il ritardo.

  • SearchVectorsrestituisce al massimo le prime 100 corrispondenze per query, quindi il k parametro del negozio è limitato a 100.

  • Le dimensioni dell'indice, la funzione di distanza e lo schema di ricerca vengono fissati al momento della creazione. L'archivio li convalida rispetto a un indice esistente anziché procedere con una mancata corrispondenza.

Per l'API completa, consulta il repository DynamoDBVectorStore langchain-aws.

Risorse aggiuntive