文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

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 中获取与查询匹配的文档。