Skip to main content

使用混合搜索的时间序列向量 RAG

此模板展示了如何使用时间序列向量与自查询检索器结合,在相似性和时间上执行混合搜索。当您的数据具有强烈的时间基础组件时,这非常有用。一些此类数据的示例包括:

  • 新闻文章(政治、商业等)
  • 博客文章、文档或其他发布材料(公共或私人)
  • 社交媒体帖子
  • 任何类型的变更日志
  • 消息

此类项目通常通过相似性和时间进行搜索。例如:给我展示所有关于2022年丰田卡车的新闻。

Timescale Vector 在特定时间范围内搜索嵌入时提供了卓越的性能,通过利用自动表分区来隔离特定时间范围的数据。

Langchain 的自查询检索器允许从用户查询的文本中推导时间范围(以及其他搜索标准)。

什么是 Timescale Vector?

Timescale Vector 是用于 AI 应用的 PostgreSQL++。

Timescale Vector 使您能够高效地在 PostgreSQL 中存储和查询数十亿个向量嵌入。

  • 通过受 DiskANN 启发的索引算法,增强 pgvector 在 1B+ 向量上的更快、更准确的相似性搜索。
  • 通过自动时间分区和索引,支持快速的基于时间的向量搜索。
  • 提供熟悉的 SQL 接口,用于查询向量嵌入和关系数据。

Timescale Vector 是云 PostgreSQL,用于 AI,能够随着您从 POC 到生产的需求而扩展:

  • 通过使您能够在一个数据库中存储关系元数据、向量嵌入和时间序列数据,简化操作。
  • 受益于坚如磐石的 PostgreSQL 基础,具备企业级功能,如流式备份和复制、高可用性和行级安全性。
  • 提供无忧体验,具备企业级安全性和合规性。

如何访问 Timescale Vector

Timescale Vector 可在 Timescale 云 PostgreSQL 平台上使用。(目前没有自托管版本。)

  • LangChain 用户可以获得 Timescale Vector 的 90 天免费试用。
  • 要开始使用,请 注册 Timescale,创建一个新数据库并按照此笔记本操作!
  • 有关在 Python 中使用 Timescale Vector 的更多详细信息,请参阅 安装说明

环境设置

此模板使用 Timescale Vector 作为向量存储,并要求设置 TIMESCALES_SERVICE_URL。如果您还没有账户,请在 这里 注册 90 天的试用。

要加载示例数据集,请设置 LOAD_SAMPLE_DATA=1。要加载您自己的数据集,请参见下面的部分。

设置 OPENAI_API_KEY 环境变量以访问 OpenAI 模型。

使用方法

要使用此包,您首先需要安装 LangChain CLI:

pip install -U langchain-cli

要创建一个新的 LangChain 项目并将其作为唯一包安装,您可以执行:

langchain app new my-app --package rag-timescale-hybrid-search-time

如果您想将其添加到现有项目中,可以直接运行:

langchain app add rag-timescale-hybrid-search-time

并将以下代码添加到您的 server.py 文件中:

from rag_timescale_hybrid_search.chain import chain as rag_timescale_hybrid_search_chain

add_routes(app, rag_timescale_hybrid_search_chain, path="/rag-timescale-hybrid-search")

(可选)现在让我们配置 LangSmith。 LangSmith 将帮助我们跟踪、监控和调试 LangChain 应用程序。 您可以在 这里 注册 LangSmith。 如果您没有访问权限,可以跳过此部分。

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project> # 如果未指定,默认为 "default"

如果您在此目录中,则可以直接通过以下方式启动 LangServe 实例:

langchain serve

这将启动 FastAPI 应用程序,服务器在本地运行,地址为 http://localhost:8000

我们可以在 http://127.0.0.1:8000/docs 查看所有模板 我们可以在 http://127.0.0.1:8000/rag-timescale-hybrid-search/playground 访问游乐场

我们可以通过代码访问模板:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/rag-timescale-hybrid-search")

加载您自己的数据集

要加载您自己的数据集,您需要修改 chain.py 中的 DATASET SPECIFIC CODE 部分的代码。该代码定义了集合的名称、如何加载数据,以及集合内容和所有元数据的人类语言描述。人类语言描述被自查询检索器用于帮助 LLM 将问题转换为元数据的过滤器,以便在 Timescale-vector 中搜索数据。


此页面是否有帮助?


您还可以留下详细的反馈 在 GitHub 上