

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan DynamoDB dengan LangChain
<a name="ddb-langchain"></a>

[LangChain](https://www.langchain.com/)adalah kerangka kerja untuk membangun aplikasi dengan model bahasa besar (LLM). Dua LangChain integrasi menggunakan DynamoDB: `DynamoDBChatMessageHistory` kelas menyimpan riwayat percakapan sehingga model dapat berkomunikasi bolak-balik dengan pengguna di seluruh sesi, dan `DynamoDBVectorStore` kelas mengimplementasikan antarmuka penyimpanan LangChain vektor pada indeks vektor DynamoDB untuk pencarian kesamaan.

## Riwayat pesan obrolan
<a name="langchain-chat-history"></a>

Kel `DynamoDBChatMessageHistory` as, dalam `langchain-community` paket untuk Python dan `@langchain/community` paket untuk JavaScript, mempertahankan pesan obrolan dalam tabel DynamoDB. Kelas mengharapkan tabel yang ada yang kunci partisinya adalah atribut string bernama `SessionId` (dapat dikonfigurasi melalui`primary_key_name`). Buat tabel dengan 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
```

Instal paket, lalu baca dan tulis riwayat yang dikunci oleh ID sesi:

```
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)
```

Setiap pesan sesi obrolan disimpan di bawahnya`session_id`, sehingga pengguna yang kembali melanjutkan percakapan di mana mereka tinggalkan. Konstruktor juga mendukung kunci komposit untuk mengisolasi riwayat dengan detail aplikasi seperti ID pengguna (`key`), Waktu kedaluwarsa Live-based sesi lama (`ttl`), dan batas pada pesan yang disimpan (`history_size`). Untuk API lengkap, lihat referensi [ Python ](https://reference.langchain.com/python/langchain-community/chat_message_histories/dynamodb/DynamoDBChatMessageHistory) dan [ JavaScript referensi](https://reference.langchain.com/javascript/langchain-community/stores/message/dynamodb).

## Toko vektor didukung oleh indeks vektor
<a name="langchain-vector-store"></a>

Kel `DynamoDBVectorStore` as, dalam `langchain-aws` paket, mengimplementasikan antarmuka LangChain penyimpanan vektor menggunakan indeks vektor DynamoDB (lihat). [Menggunakan indeks vektor di DynamoDB](VectorSearch.md) Dokumen disimpan sebagai item DynamoDB biasa dan dicari melalui indeks vektor tabel dengan `SearchVectors` API, sehingga LangChain retriever dan rantai RAG menjalankan pencarian kesamaan langsung terhadap tabel yang menyimpan data Anda.

Instal paket:

```
pip install langchain-aws boto3
```

Berikan nama tabel dan fungsi embedding. Tabel dan indeks vektor dibuat pada penulisan pertama jika tidak ada:

```
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)
```

Untuk menelusuri lingkup, lewati `partition_attribute` saat Anda membangun toko. Indeks vektor kemudian dibuat dengan kunci partisi skema pencarian pada bidang metadata dokumen itu, dan setiap pencarian hanya memeriksa satu nilainya, seperti koleksi, kategori, atau penyewa, bukan seluruh korpus. Setiap pencarian kemudian memberikan nilai melalui `filter={partition_attribute: value}` atau tingkat toko. `default_partition_value` Kunci partisi adalah bagian dari skema indeks dan tidak dapat diubah setelah indeks dibuat.

Ingatlah hal-hal berikut ini:
+ Seperti indeks sekunder global, indeks vektor pada akhirnya konsisten: pencarian yang dikeluarkan segera setelah `add_texts` mungkin tidak menyertakan dokumen yang baru ditulis sampai indeks mengejar ketinggalan.
+ `SearchVectors`mengembalikan paling banyak 100 kecocokan teratas per kueri, sehingga `k` parameter toko dibatasi pada 100.
+ Dimensi indeks, fungsi jarak, dan skema pencarian ditetapkan pada saat pembuatan. Toko memvalidasi mereka terhadap indeks yang ada daripada melanjutkan dengan ketidakcocokan.

Untuk API lengkap, lihat [ DynamoDBVectorStore di repositori langchain-aws. ](https://github.com/langchain-ai/langchain-aws/tree/main/libs/aws/langchain_aws/vectorstores/dynamodb)

## Sumber daya tambahan
<a name="langchain-additional-resources"></a>
+ [DynamoDBChatMessageHistory Referensi Python ](https://reference.langchain.com/python/langchain-community/chat_message_histories/dynamodb/DynamoDBChatMessageHistory)
+ [DynamoDBChatMessageHistory JavaScript referensi ](https://reference.langchain.com/javascript/langchain-community/stores/message/dynamodb)
+ [langchain-aws aktif GitHub ](https://github.com/langchain-ai/langchain-aws)
+ [Buat chatbot yang dapat diskalakan dan sadar konteks dengan Amazon DynamoDB, Amazon Bedrock, dan LangChain ](https://aws.amazon.com/blogs/database/build-a-scalable-context-aware-chatbot-with-amazon-dynamodb-amazon-bedrock-and-langchain/)