Skip to main content
Open on GitHub

Astra DB

DataStax Astra DB 是一个无服务器的、为 AI 而生的数据库,它构建于 Apache Cassandra® 之上,并通过易于使用的 JSON API 提供便捷的访问。

请参阅 DataStax 提供的教程

安装和设置

安装以下 Python 包:

pip install "langchain-astradb>=0.6,<0.7"

创建数据库(如果需要)并获取 连接密钥。 设置以下变量:

ASTRA_DB_API_ENDPOINT="API_ENDPOINT"
ASTRA_DB_APPLICATION_TOKEN="TOKEN"

Vector Store

这里展示了一些典型的初始化模式:

from langchain_astradb import AstraDBVectorStore

vector_store = AstraDBVectorStore(
embedding=my_embedding,
collection_name="my_store",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
)


from astrapy.info import VectorServiceOptions

vector_store_vectorize = AstraDBVectorStore(
collection_name="my_vectorize_store",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
collection_vector_service_options=VectorServiceOptions(
provider="nvidia",
model_name="NV-Embed-QA",
),
)


from astrapy.info import (
CollectionLexicalOptions,
CollectionRerankOptions,
RerankServiceOptions,
VectorServiceOptions,
)

vector_store_hybrid = AstraDBVectorStore(
collection_name="my_hybrid_store",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
collection_vector_service_options=VectorServiceOptions(
provider="nvidia",
model_name="NV-Embed-QA",
),
collection_lexical=CollectionLexicalOptions(analyzer="standard"),
collection_rerank=CollectionRerankOptions(
service=RerankServiceOptions(
provider="nvidia",
model_name="nvidia/llama-3.2-nv-rerankqa-1b-v2",
),
),
)
API Reference:AstraDBVectorStore

AstraDBVectorStore 类的显著特点:

  • 原生异步 API;
  • 搜索时支持元数据过滤;
  • MMR(最大边际相关性)搜索;
  • 服务器端嵌入计算(在 Astra DB 的术语中称为 "vectorize");
  • 从现有的、预先填充的 Astra DB 集合自动检测其设置;
  • 混合搜索(向量 + BM25,然后进行重排步骤);
  • 支持非 Astra 数据 API(例如,自托管的 HCD 部署);

示例笔记本 中了解更多信息。

请参阅 DataStax 提供的示例

Chat message history

from langchain_astradb import AstraDBChatMessageHistory

message_history = AstraDBChatMessageHistory(
session_id="test-session",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
)

请参阅 使用示例

LLM Cache

from langchain.globals import set_llm_cache
from langchain_astradb import AstraDBCache

set_llm_cache(AstraDBCache(
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
))
API Reference:set_llm_cache | AstraDBCache

示例笔记本 中了解更多信息(滚动到 Astra DB 部分)。

Semantic LLM Cache

from langchain.globals import set_llm_cache
from langchain_astradb import AstraDBSemanticCache

set_llm_cache(AstraDBSemanticCache(
embedding=my_embedding,
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
))

示例笔记本 中了解更多信息(滚动到相应部分)。

Document loader

from langchain_astradb import AstraDBLoader

loader = AstraDBLoader(
collection_name="my_collection",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
)
API Reference:AstraDBLoader

示例笔记本 中了解更多信息。

Self-querying retriever

from langchain_astradb import AstraDBVectorStore
from langchain.retrievers.self_query.base import SelfQueryRetriever

vector_store = AstraDBVectorStore(
embedding=my_embedding,
collection_name="my_store",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
)

retriever = SelfQueryRetriever.from_llm(
my_llm,
vector_store,
document_content_description,
metadata_field_info
)

示例笔记本 中了解更多信息。

Store

from langchain_astradb import AstraDBStore

store = AstraDBStore(
collection_name="my_kv_store",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
)
API Reference:AstraDBStore

请参阅 AstraDBStore 的 API 参考

Byte Store

from langchain_astradb import AstraDBByteStore

store = AstraDBByteStore(
collection_name="my_kv_store",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
)
API Reference:AstraDBByteStore

请参阅 AstraDBByteStore 的 API 文档