解锁潜力:使用 Astra DB Vector Store 进行智能搜索和存储

81 阅读3分钟

引言

在现代数据驱动的应用程序中,高效地存储和检索信息至关重要。Astra DB 作为一款支持向量存储的无服务器数据库,基于 Apache Cassandra® 构建,并通过易于使用的 JSON API 提供服务,为开发者提供了强大的工具来处理和检索大规模数据。本篇文章将带你快速入门,了解如何通过 Astra DB Vector Store 来实现这一目标。

主要内容

设置

要使用 Astra DB Vector Store,首先需要安装 langchain-astradb 合作包:

pip install -qU "langchain-astradb>=0.3.3"

凭证

  1. 访问 AstraDB 网站 并创建一个帐户。
  2. 创建一个新的数据库。
  3. 初始化数据库后,生成一个应用程序令牌并保存。
  4. 复制数据库详情中的 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---