使用Timescale Vector进行混合搜索:结合相似性和时间的强大检索

71 阅读2分钟

引言

在当今数据驱动的世界中,许多数据如新闻文章、社交媒体发布、更新日志等,具有强烈的时间特征。进行此类数据检索时,结合相似性和时间的混合搜索成为一种强大工具。本文将介绍如何使用Timescale Vector和Langchain的自我查询检索器,进行有效的混合搜索。

主要内容

什么是Timescale Vector?

Timescale Vector是面向AI应用的PostgreSQL增强版。它可以高效存储和查询数十亿的向量嵌入,支持通过DiskANN启发的索引算法进行快速相似性搜索。此外,通过自动的时间分区和索引,Timescale Vector能够进行快速的基于时间的向量搜索。

为什么使用Timescale Vector进行混合搜索?

  • 性能优势:通过自动表分区隔离特定时间范围的数据。
  • 熟悉的接口:提供SQL接口来查询向量嵌入和关系数据。
  • 易于扩展:从概念验证到生产环境的无缝过渡。
  • 企业级功能:包括流备份、复制、高可用性和行级安全性。

如何访问Timescale Vector?

Timescale Vector目前可以在Timescale云平台上使用,用户可以申请LangChain的90天免费试用。

环境设置

请确保已设置TIMESCALES_SERVICE_URL,并注册90天的试用。

  1. 安装LangChain CLI:

    pip install -U langchain-cli
    
  2. 创建新的LangChain项目并添加包:

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

代码示例

以下是使用Timescale Vector的简单代码示例:

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

# 配置Langchain应用
add_routes(app, rag_timescale_hybrid_search_chain, path="/rag-timescale-hybrid-search")

# 使用RemoteRunnable访问模板
runnable = RemoteRunnable("http://localhost:8000/rag-timescale-hybrid-search") # 使用API代理服务提高访问稳定性

常见问题和解决方案

  • 网络访问限制:在某些地区,访问Timescale可能受到限制,建议使用API代理服务以提高访问稳定性。
  • 数据集加载问题:请确保在chain.pyDATASET SPECIFIC CODE部分正确修改代码以加载自定义数据集。

总结和进一步学习资源

使用Timescale Vector进行时间与相似性混合搜索为数据检索提供了强大的工具。建议阅读以下资源以获取更多信息:

参考资料

  1. Timescale Vector 官方文档
  2. LangChain 使用指南
  3. PostgreSQL pgvector

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

---END---