集成:Marqo
用于从 Marqo 存储和检索文档的文档存储
目录
概述
此集成允许您使用 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}})
