由 deepset 维护
集成:pgvector
用于存储和检索 pgvector 文档的 Document Store
目录
安装
pgvector 是 PostgreSQL 的一个扩展,为向量相似性搜索增加了支持。
要快速设置带有 pgvector 的 PostgreSQL 数据库,您可以使用 Docker
docker run -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=postgres pgvector/pgvector:pg17
有关如何安装 pgvector 的更多信息,请访问 pgvector GitHub 仓库。
使用 pip 安装 pgvector-haystack
pip install pgvector-haystack
使用
在 PG_CONN_STR 环境变量中定义到 PostgreSQL 数据库的连接字符串。例如
export PG_CONN_STR="postgresql://postgres:postgres@localhost:5432/postgres"
安装后,初始化 PgvectorDocumentStore
from haystack_integrations.document_stores.pgvector import PgvectorDocumentStore
document_store = PgvectorDocumentStore(
table_name="haystack_docs",
embedding_dimension=768,
vector_function="cosine_similarity",
recreate_table=True,
search_strategy="hnsw",
)
将文档写入 PgvectorDocumentStore
要将文档写入 PgvectorDocumentStore,请创建一个索引管道。
from haystack import Pipeline
from haystack.components.converters import TextFileToDocument
from haystack.components.writers import DocumentWriter
from haystack.components.embedders import SentenceTransformersDocumentEmbedder
indexing = Pipeline()
indexing.add_component("converter", TextFileToDocument())
indexing.add_component("embedder", SentenceTransformersDocumentEmbedder())
indexing.add_component("writer", DocumentWriter(document_store))
indexing.connect("converter", "embedder")
indexing.connect("embedder", "writer")
indexing.run({"converter": {"sources": file_paths}})
从 PgvectorDocumentStore 进行检索
您可以使用一个简单的管道,其中包含 PgvectorEmbeddingRetriever,来检索与给定查询语义相似的文档。
from haystack.components.embedders import SentenceTransformersTextEmbedder
from haystack_integrations.components.retrievers.pgvector import PgvectorEmbeddingRetriever
from haystack import Pipeline
querying = Pipeline()
querying.add_component("embedder", SentenceTransformersTextEmbedder())
querying.add_component("retriever", PgvectorEmbeddingRetriever(document_store=document_store, top_k=3))
querying.connect("embedder", "retriever")
results = querying.run({"embedder": {"text": "my query"}})
您还可以使用 PgvectorKeywordRetriever 根据关键字匹配来检索文档。
from haystack_integrations.components.retrievers.pgvector import PgvectorKeywordRetriever
retriever = PgvectorKeywordRetriever(document_store=document_store, top_k=3))
results = retriever.run(query="my query")
示例
您可以在 此仓库 的 examples/ 文件夹下找到一个演示如何使用 Document Store 和 Retriever 的代码示例。
许可证
pgvector-haystack 在 Apache-2.0 许可条款下分发。
