Skip to main content

Astra DB

DataStax 的 Astra DB 是建立在 Cassandra 上的无服务器向量数据库,通过易于使用的 JSON API 方便地提供。

AstraDBStoreAstraDBByteStore 需要安装 astrapy 包:

%pip install --upgrade --quiet  astrapy

Store 需要以下参数:

  • api_endpoint:Astra DB API 端点。看起来像 https://01234567-89ab-cdef-0123-456789abcdef-us-east1.apps.astra.datastax.com

  • token:Astra DB 令牌。看起来像 AstraCS:6gBhNmsk135....

  • collection_name:Astra DB 集合名称

  • namespace:(可选)Astra DB 命名空间

AstraDBStore

AstraDBStoreBaseStore 的实现,将所有内容存储在 DataStax Astra DB 实例中。

存储键必须是字符串,并将映射到 Astra DB 文档的 _id 字段。

存储值可以是任何可以由 json.dumps 序列化的对象。

在数据库中,条目的形式将是:

{
"_id": "<key>",
"value": <value>
}
from langchain_community.storage import AstraDBStore
from getpass import getpass
ASTRA_DB_API_ENDPOINT = input("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass("ASTRA_DB_APPLICATION_TOKEN = ")
store = AstraDBStore(
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
collection_name="my_store",
)
store.mset([("k1", "v1"), ("k2", [0.1, 0.2, 0.3])])
print(store.mget(["k1", "k2"]))
['v1', [0.1, 0.2, 0.3]]

与 CacheBackedEmbeddings 的使用

您可以将 AstraDBStoreCacheBackedEmbeddings 结合使用,以缓存嵌入计算的结果。

请注意,AstraDBStore 将嵌入存储为浮点数列表,而不是首先将它们转换为字节,因此我们不在那里使用 fromByteStore

from langchain.embeddings import CacheBackedEmbeddings
from langchain_openai import OpenAIEmbeddings
embeddings = CacheBackedEmbeddings(
underlying_embeddings=OpenAIEmbeddings(), document_embedding_store=store
)

AstraDBByteStore

AstraDBByteStoreByteStore 的实现,将所有内容存储在 DataStax Astra DB 实例中。

存储键必须是字符串,并将映射到 Astra DB 文档的 _id 字段。

存储的 bytes 值将转换为 base64 字符串,以便存储到 Astra DB 中。

在数据库中,条目的形式将是:

{
"_id": "<key>",
"value": "bytes encoded in base 64"
}
from langchain_community.storage import AstraDBByteStore
from getpass import getpass
ASTRA_DB_API_ENDPOINT = input("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass("ASTRA_DB_APPLICATION_TOKEN = ")
store = AstraDBByteStore(
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
collection_name="my_store",
)
store.mset([("k1", b"v1"), ("k2", b"v2")])
print(store.mget(["k1", "k2"]))
[b'v1', b'v2']

Was this page helpful?


You can leave detailed feedback on GitHub.