You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Marqo基于索引内已有文档实现相似推荐?

使用Marqo基于已有文档获取相似推荐的实现方法

核心思路

Marqo支持通过文档的ID或内容特征进行相似性搜索,本质是用目标文档的向量匹配索引内其他文档的向量,无需额外文本查询。

具体实现步骤

1. 初始化Marqo客户端

先确认Marqo服务已启动,再初始化客户端:

from marqo import Client

# 本地Marqo服务默认端口为8882
mq = Client(url="http://localhost:8882")

2. 基于目标文档ID搜索相似内容

如果已知目标文档的_id,可直接用该ID触发相似检索:

# 替换为你的索引名和目标文档ID
index_name = "your-document-index"
target_doc_id = "target-doc-xxxx"

results = mq.index(index_name).search(
    q=None,  # 无需文本查询,设为None
    searchable_attributes=["*"],  # 检索所有字段的向量
    limit=5,  # 返回Top5相似文档
    using_document_ids=[target_doc_id]  # 指定用于匹配的目标文档ID
)

# 遍历输出结果
for hit in results["hits"]:
    print(f"文档ID: {hit['_id']}, 相似度得分: {hit['_score']}")
    print(f"文档内容摘要: {hit['content']}\n")

3. 基于目标文档内容片段搜索相似内容

若不知道目标文档ID,可直接用其内容片段生成向量进行匹配:

# 替换为目标文档的特征内容片段
target_content = "这里是你要匹配的目标文档的核心内容片段"

results = mq.index(index_name).search(
    q=target_content,
    searchable_attributes=["content"],  # 指定要匹配的字段
    limit=5
)

# 处理并输出结果
for hit in results["hits"]:
    print(f"文档ID: {hit['_id']}, 相似度得分: {hit['_score']}")
    print(f"文档内容摘要: {hit['content']}\n")

关键注意事项

  • using_document_ids是核心参数:传入已存在的文档ID时,Marqo会直接调用该文档的向量进行检索,跳过文本编码步骤,效率更高。
  • 确保索引时需匹配的字段已开启向量化(Marqo默认会为文本字段自动生成向量)。
  • 相似度得分越高,文档匹配度越强,可通过limit参数控制返回结果数量。

内容的提问来源于stack exchange,提问作者rbdcgalaxy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:07:40