引言
在现代数据驱动的应用程序中,高效地存储和检索信息至关重要。Astra DB 作为一款支持向量存储的无服务器数据库,基于 Apache Cassandra® 构建,并通过易于使用的 JSON API 提供服务,为开发者提供了强大的工具来处理和检索大规模数据。本篇文章将带你快速入门,了解如何通过 Astra DB Vector Store 来实现这一目标。
主要内容
设置
要使用 Astra DB Vector Store,首先需要安装 langchain-astradb 合作包:
pip install -qU "langchain-astradb>=0.3.3"
凭证
- 访问 AstraDB 网站 并创建一个帐户。
- 创建一个新的数据库。
- 初始化数据库后,生成一个应用程序令牌并保存。
- 复制数据库详情中的 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 = ")
向量存储初始化
Astra DB 提供了两种创建向量存储的方式:
- 方法 1:显式嵌入:使用单独的嵌入类并传递给
AstraDBVectorStore构造器。 - 方法 2:集成嵌入计算:使用 Astra DB 的向量化功能,指定支持的嵌入模型名称,嵌入计算完全在数据库中进行。
显式嵌入初始化
以下是使用显式嵌入类实例化向量存储的示例:
from langchain_openai 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, # 使用API代理服务提高访问稳定性
token=ASTRA_DB_APPLICATION_TOKEN,
)
管理向量存储
添加和删除项目
可以通过 add_documents 函数向向量存储添加文档:
from langchain_core.documents import Document
from uuid import uuid4
document_1 = Document(
page_content="今天早上我吃了一顿美味的巧克力芯松饼和炒蛋。",
metadata={"source": "tweet"},
)
documents = [document_1]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
通过 delete 函数删除文档:
vector_store.delete(ids=uuids[-1])
查询向量存储
进行相似性搜索:
results = vector_store.similarity_search(
"LangChain 为使用 LLM 提供了简便的抽象",
k=2,
filter={"source": "tweet"},
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
- API访问问题:如果由于网络限制难以访问 AstraDB 的 API,可以考虑使用 API 代理服务来提高访问的稳定性。
- 初始化错误:确保在 Astra DB 控制面板中正确设置数据库并启用必要的集成。
总结和进一步学习资源
Astra DB Vector Store 提供了一种高效的方法来存储和检索大规模数据,通过集成的向量化功能,开发者可以轻松实现丰富的数据查询。进一步学习资源可以参考 Astra DB 的官方文档,以及 LangChain 的 API 参考。
参考资料
- Astra DB 文档
- LangChain API 参考
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---