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
LangChainDynamoDBChatMessageHistory 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
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_textspotrebbe non includere i documenti appena scritti finché l'indice non recupera il ritardo. -
SearchVectorsrestituisce al massimo le prime 100 corrispondenze per query, quindi ilkparametro 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.