探索DataStax Astra DB的AI驱动自查询检索器

44 阅读2分钟

数据库新时代: Astra DB与自查询检索器

随着数据量的不断增长,如何高效搜寻和管理数据成为现代应用的核心挑战之一。DataStax Astra DB凭借其服务器无依赖、Cassandra驱动的特性,为开发者提供了一种高效的解决方案。本文将带你了解如何使用Astra DB构建强大的向量存储,并结合OpenAI实现自查询检索功能。

1. 引言

Astra DB是一款基于Cassandra构建的数据库,支持使用JSON API便捷访问。通过结合OpenAI的Embeddings,我们可以创建一个向量存储,并使用自查询检索器来实现智能化的数据提取。

2. 创建Astra DB向量存储

2.1 准备工作

首先,我们需要安装必要的Python包:

%pip install --upgrade --quiet lark astrapy langchain-openai

确保你已获取OpenAI API密钥:

import os
from getpass import getpass
from langchain_openai.embeddings import OpenAIEmbeddings

os.environ["OPENAI_API_KEY"] = getpass("OpenAI API Key:")
embeddings = OpenAIEmbeddings()

2.2 初始化向量存储

我们需要创建一个Astra DB VectorStore并用一些数据进行初始化。例如,这里我们使用电影摘要数据:

from langchain_community.vectorstores import AstraDB
from langchain_core.documents import Document

docs = [
    Document(page_content="A bunch of scientists bring back dinosaurs...", metadata={"year": 1993, "rating": 7.7, "genre": "science fiction"}),
    # 更多文档...
]

ASTRA_DB_API_ENDPOINT = input("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass("ASTRA_DB_APPLICATION_TOKEN = ")

vectorstore = AstraDB.from_documents(
    docs,
    embeddings,
    collection_name="astra_self_query_demo",
    api_endpoint=ASTRA_DB_API_ENDPOINT,  # 使用API代理服务提高访问稳定性
    token=ASTRA_DB_APPLICATION_TOKEN,
)

3. 创建自查询检索器

自查询检索器需要了解文档的元数据结构:

from langchain.chains.query_constructor.base import AttributeInfo
from langchain.retrievers.self_query.base import SelfQueryRetriever
from langchain_openai import OpenAI

metadata_field_info = [
    AttributeInfo(name="genre", description="The genre of the movie", type="string or list[string]"),
    # 更多属性信息...
]

llm = OpenAI(temperature=0)
retriever = SelfQueryRetriever.from_llm(
    llm, vectorstore, "Brief summary of a movie", metadata_field_info, verbose=True
)

4. 代码示例: 自查询检索的强大功能

# 查询关于恐龙的电影
retriever.invoke("What are some movies about dinosaurs?")

# 查询评分高于8.5的电影
retriever.invoke("I want to watch a movie rated higher than 8.5")

# 执行复合过滤查询
retriever.invoke("What's a highly rated (above 8.5), science fiction movie ?")

此外,还可以通过设置enable_limit=True来限制返回文档的数量。

5. 常见问题和解决方案

  • API访问稳定性:由于网络限制,建议使用API代理服务。
  • 数据安全:存储敏感数据时,确保使用安全的连接和方法。

6. 总结和进一步学习资源

这篇文章演示了如何使用DataStax Astra DB结合OpenAI实现自查询功能。希望您能够通过这些示例掌握基本的实现流程,同时注意API的使用细节,确保系统的稳定性与安全性。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---