📘 **TELUS Agriculture & Consumer Goods** 如何通过 **Haystack Agents** 转变促销交易
由 deepset 维护

集成:pgvector

用于存储和检索 pgvector 文档的 Document Store

作者
deepset

PyPI - Version PyPI - Python Version test


目录

安装

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-haystackApache-2.0 许可条款下分发。