使用Astra DB构建强大的向量存储:快速入门指南
在现代数据管理中,Astra DB作为一种无服务器的向量数据库,提供了一种高效且直观的方式来存储和处理向量数据。本篇文章旨在帮助您快速上手Astra DB,并利用其向量存储功能处理大规模数据。
1. 引言
Astra DB是基于Apache Cassandra®的无服务器数据库,特别适合处理向量数据。借助Astra DB,开发者可以轻松实现高效的相似性搜索和数据查询。在本指南中,我们将介绍如何设置Astra DB向量存储,并提供详细的代码示例。
2. 主要内容
2.1 环境设置
要使用Astra DB的向量存储功能,首先需要安装langchain-astradb
包:
pip install -qU "langchain-astradb>=0.3.3"
然后,您需要创建一个Astra DB账户,并初始化一个新数据库。完成后,请生成一个应用程序令牌,并记录下API端点。
2.2 初始化向量存储
方法1:显式嵌入
在这种方法中,你可以使用外部的嵌入向量生成器,如OpenAI或HuggingFace。
import getpass
from langchain_openai import OpenAIEmbeddings
from langchain_astradb import AstraDBVectorStore
ASTRA_DB_API_ENDPOINT = getpass.getpass("ASTRA_DB_API_ENDPOINT: ") # 使用API代理服务提高访问稳定性
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN: ")
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
)
方法2:集成嵌入计算
若要利用Astra DB内置的向量化功能,可以直接指定嵌入模型:
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,
collection_vector_service_options=openai_vectorize_options
)
3. 代码示例
下面的示例展示了如何向向量存储添加文档,并执行相似性搜索:
from uuid import uuid4
from langchain_core.documents import Document
documents = [
Document(page_content="Sample text 1", metadata={"source": "source1"}),
Document(page_content="Sample text 2", metadata={"source": "source2"})
]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
# 查询存储
results = vector_store.similarity_search(
"Sample query text",
k=2,
filter={"source": "source1"},
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
4. 常见问题和解决方案
网络访问问题
由于地域限制,某些地区的开发者可能需要使用API代理服务以提高访问Astra DB的稳定性。确保在代码中正确配置API代理。
嵌入模型选择
在初始化嵌入时,请根据应用场景选择合适的模型。OpenAI和HuggingFace都提供了多种模型以满足不同需求。
5. 总结和进一步学习资源
Astra DB为开发者提供了一种高效的方式来存储和处理向量数据。通过合理配置和使用,可以在大规模数据处理中获得显著的性能提升。
进一步学习
- AstraDBVectorStore文档
- 向量存储概念指南
- 向量存储操作指南
6. 参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—