PgvectorDocumentStore
Pgvector 是一个 PostgreSQL 扩展,通过向量相似性搜索来增强其功能。它建立在 PostgreSQL 的经典功能之上,例如 ACID 合规性和时间点恢复,并引入了使用向量执行精确和近似最近邻搜索的能力。
有关更多信息,请参阅 pgvector 存储库。
Pgvector Document Store 支持嵌入检索和元数据过滤。
安装
要快速设置带有 pgvector 的 PostgreSQL 数据库,您可以使用 Docker
docker run -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=postgres ankane/pgvector
有关安装 pgvector 的更多信息,请访问 pgvector GitHub 存储库。
要将 pgvector 与 Haystack 一起使用,请安装pgvector-haystack 集成
pip install pgvector-haystack
用法
在PG_CONN_STR 环境变量中定义到 PostgreSQL 数据库的连接字符串。例如:
export PG_CONN_STR="postgresql://postgres:postgres@localhost:5432/postgres"
初始化
初始化一个PgvectorDocumentStore 对象,该对象连接到 PostgreSQL 数据库并向其写入文档。
from haystack_integrations.document_stores.pgvector import PgvectorDocumentStore
from haystack import Document
document_store = PgvectorDocumentStore(
embedding_dimension=768,
vector_function="cosine_similarity",
recreate_table=True,
search_strategy="hnsw",
)
document_store.write_documents([
Document(content="This is first", embedding=[0.1]*768),
Document(content="This is second", embedding=[0.3]*768)
])
print(document_store.count_documents())
有关初始化参数的更多信息,请参阅我们的 API 文档。
要正确计算文档的嵌入,您可以使用 Document Embedder(例如,SentenceTransformersDocumentEmbedder)。
支持的 Retrievers
PgvectorEmbeddingRetriever:一个基于嵌入的 Retriever,它根据提供给 Retriever 的查询嵌入从 Document Store 中获取文档。PgvectorKeywordRetriever:一个基于关键字的 Retriever,它从 Pgvector Document Store 中获取与查询匹配的文档。
更新于 大约 1 年前
