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

集成:Marqo

用于从 Marqo 存储和检索文档的文档存储

作者
marqo-ai

目录

概述

此集成允许您使用 Marqo DB 作为 Haystack 管道的文档存储。此页面提供了有关如何启动它以及如何初始化可在任何 Haystack 管道中使用的 MarqoDocumentStore 的简单说明。

安装

pip install marqo-haystack

使用

安装后,您就可以开始将 Marqo 数据库与 Haystack 一起使用了。MarqoDocumentStore 兼容开源 Marqo Docker 容器和 Marqo 托管云服务。

在本地使用 Marqo Docker 容器开始

适用于 x86 机器

docker pull marqoai/marqo:latest
docker rm -f marqo
docker run --name marqo -it --privileged -p 8882:8882 --add-host host.docker.internal:host-gateway marqoai/marqo:latest

适用于 M1/M2 ARM 机器

docker rm -f marqo-os; docker run -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" marqoai/marqo-os:0.0.3-arm

接下来,在新终端中

docker rm -f marqo; docker run --name marqo --privileged \
    -p 8882:8882 --add-host host.docker.internal:host-gateway \
    -e "OPENSEARCH_URL=https://:9200" \
    marqoai/marqo:latest

使用 Marqo Cloud 开始

https://cloud.marqo.ai 登录或创建账户。创建一个新索引,并将索引模式设置为“文本优化”。

在 Haystack 中初始化 MarqoDocumetStore

from marqo_haystack import MarqoDocumentStore
 
document_store = MarqoDocumentStore()

如果您使用的是 Docker 容器,它将使用名为 documents 的索引;如果该索引不存在,它将被创建。

如果您使用的是 Marqo Cloud,您可以连接到现有索引,如下所示

from marqo_haystack import MarqoDocumentStore
 
document_store = MarqoDocumentStore(
    url="https://api.marqo.ai",
    api_key="XXXXXXXXXXXXX",
    collection_name="my-cloud-index"
)

将文档写入 MarqoDocumentStore

要将文档写入 MarqoDocumentStore,请创建一个索引管道。

from haystack.components.converters import TextFileToDocument
from haystack.components.writers import DocumentWriter

indexing = Pipeline()
indexing.add_component("converter", TextFileToDocument())
indexing.add_component("writer", DocumentWriter(document_store))
indexing.connect("converter", "writer")
indexing.run({"converter": {"paths": file_paths}})

使用 MarqoRetriever

要从 Marqo 文档存储中检索文档,请创建一个查询管道。

要发送单个查询,请使用 MarqoSingleRetriever

from marqo_haystack.retriever import MarqoSingleRetriever

querying = Pipeline()
querying.add_component("retriever", MarqoSingleRetriever(document_store))
results = querying.run({"retriever": {"query": "Who is Marco Polo?", "top_k": 3}})

要发送一系列查询,请使用 MarqoRetriever

from marqo_haystack.retriever import MarqoRetriever

querying = Pipeline()
querying.add_component("retriever", MarqoRetriever(document_store))
results = querying.run({"retriever": {"queries": ["Who is Marco Polo?", "Can Hippos swim?"], "top_k": 3}})