Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von DynamoDB mit LangChain
LangChainDynamoDBChatMessageHistory Klasse speichert den Gesprächsverlauf, sodass ein Modell sitzungsübergreifend mit einem Benutzer hin und her kommunizieren kann, und die DynamoDBVectorStore Klasse implementiert die LangChain Vector Store-Schnittstelle in DynamoDB-Vektorindizes für die Ähnlichkeitssuche.
Verlauf der Chat-Nachrichten
Die DynamoDBChatMessageHistory Klasse, im langchain-community Paket für Python und im @langchain/community Paket für JavaScript, speichert Chatnachrichten in einer DynamoDB-Tabelle. Die Klasse erwartet eine vorhandene Tabelle, deren Partitionsschlüssel ein Zeichenkettenattribut mit dem Namen SessionId (konfigurierbar über) ist. primary_key_name Erstellen Sie die Tabelle mit der 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
Installieren Sie die Pakete und lesen und schreiben Sie dann den Verlauf, der durch eine Sitzungs-ID gekennzeichnet ist:
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)
Die Nachrichten jeder Chat-Sitzung werden unter ihrem gespeichertsession_id, sodass ein wiederkehrender Benutzer die Konversation dort weiterführt, wo er aufgehört hat. Der Konstruktor unterstützt auch zusammengesetzte Schlüssel zur Isolierung des Verlaufs anhand von Anwendungsdetails wie einer Benutzer-ID (key), der Zeit bis zum Live-based Ablauf alter Sitzungen (ttl) und einer Obergrenze für gespeicherte Nachrichten (history_size). Die vollständige API finden Sie in der Python-Referenz
Vektorspeicher, der durch Vektorindizes unterstützt wird
Die DynamoDBVectorStore Klasse im langchain-aws Paket implementiert die LangChain Vektorspeicher-Schnittstelle mithilfe von DynamoDB-Vektorindizes (siehe). Verwenden von Vektorindizes in DynamoDB Dokumente werden als reguläre DynamoDB-Elemente gespeichert und mit der SearchVectors API im Vektorindex der Tabelle durchsucht, sodass LangChain Retriever und RAG-Ketten Ähnlichkeitssuchen direkt in der Tabelle durchführen, die Ihre Daten enthält.
Installieren Sie das Paket:
pip install langchain-aws boto3
Geben Sie einen Tabellennamen und eine Einbettungsfunktion an. Die Tabelle und der Vektorindex werden beim ersten Schreiben erstellt, falls sie nicht existieren:
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)
Um den Suchbereich einzugrenzen, geben Sie partition_attribute bei der Erstellung des Stores die Zeichenfolge an. Der Vektorindex wird dann mit einem Suchschema-Partitionsschlüssel für dieses Dokument-Metadatenfeld erstellt, und bei jeder Suche wird nur ein Wert davon untersucht, z. B. eine Sammlung, eine Kategorie oder ein Mandant, und nicht der gesamte Korpus. Bei jeder Suche wird dann der Wert auf filter={partition_attribute: value} oder auf default_partition_value Speicherebene geliefert. Der Partitionsschlüssel ist Teil des Indexschemas und kann nach der Erstellung des Indexes nicht mehr geändert werden.
Beachten Sie Folgendes:
-
Wie ein globaler sekundärer Index ist auch der Vektorindex letztendlich konsistent: Eine unmittelbar danach ausgeführte Suche schließt
add_textsmöglicherweise die gerade geschriebenen Dokumente erst ein, wenn der Index aufgeholt hat. -
SearchVectorsgibt höchstens die 100 besten Treffer pro Abfrage zurück, sodass derkParameter des Speichers auf 100 begrenzt ist. -
Die Dimensionen, die Entfernungsfunktion und das Suchschema des Indexes werden bei der Erstellung festgelegt. Der Store validiert sie anhand eines vorhandenen Indexes, anstatt mit einer Nichtübereinstimmung fortzufahren.
Die vollständige API finden Sie DynamoDBVectorStore im langchain-aws-Repository.