本指南介绍如何启用和配置 Discourse AI 插件的“相关话题”功能。
所需用户级别:管理员
“相关话题”功能通过根据用户当前阅读的主题推荐语义上相似的主题,帮助用户发现相关内容。这增强了内容探索并提高了用户参与度。
功能
- 语义文本相似度:超越关键词匹配,以查找真正相关的内容
- 在“推荐”和“相关”话题之间切换
- 对匿名和已登录用户均可用
启用“相关话题”
对于启用了 Discourse AI 插件的所有 Discourse 托管客户,“相关话题”功能默认开启。
先决条件
“相关话题”功能需要 Embeddings 才能运行。
如果您使用的是我们的托管服务,Embeddings 使用开源模型提供。无需额外设置。
自托管实例需要通过受支持的提供商配置嵌入模型。
配置
- 前往 管理 → 插件 → Discourse AI → AI 功能
- 找到 Embeddings 模块并进行配置:
- 将
ai_embeddings_selected_model设置为您已配置的嵌入定义- 启用
ai_embeddings_enabled以激活 Embeddings- 启用
ai_embeddings_semantic_related_topics_enabled以激活“相关话题”功能设置嵌入模型
在启用嵌入功能之前,您需要配置一个嵌入模型。前往 管理 → 插件 → Discourse AI → Embeddings 以创建新的嵌入定义。您可以从以下几种预设中选择:
- Open AI:
text-embedding-3-small或text-embedding-3-large(推荐用于大多数站点)- Google:
gemini-embedding-001- Hugging Face(自托管推理):
multilingual-e5-large(推荐用于非英语或多语言站点)、bge-large-en或bge-m3您需要为所选提供商提供 API 密钥(或关联 AI 密钥)和端点 URL。
附加设置
以下设置允许您微调“相关话题”功能:
ai_embeddings_semantic_related_topics:在相关话题部分显示的最多话题数(默认值:5)ai_embeddings_semantic_related_include_closed_topics:是否在相关结果中包含已关闭的话题(默认值:true)ai_embeddings_semantic_related_age_penalty:对较旧的话题应用惩罚,以便优先显示较新的内容(默认值:0.0,范围:0.0–2.0)ai_embeddings_semantic_related_age_time_scale:年龄惩罚的时间尺度,单位为天(默认值:365)技术常见问题
展开以查看“相关话题”架构图
概述如下:当创建一个/更新一个话题时,会发生以下情况:
sequenceDiagram User->>Discourse: 创建话题 Discourse-->>Embedding Microservice: 生成嵌入 Embedding Microservice-->>Discourse: Discourse-->>PostgreSQL: 存储嵌入在访问话题时:
sequenceDiagram User->>Discourse: 访问话题 Discourse-->>PostgreSQL: 查询最接近的话题 PostgreSQL-->>Discourse: Discourse->>User: 显示相关话题“相关话题”如何工作?
- 当用户访问一个话题时,Discourse 会根据其嵌入表示向数据库查询语义上最相似的话题。然后将这些相关话题展示给用户,鼓励用户进一步探索社区的内容。
话题/帖子数据如何处理?
- 对于 Discourse 托管站点,数据在我们安全的虚拟私有数据中心内处理。对于自托管站点,数据处理取决于您选择的第三方提供商。
嵌入数据存储在哪里?
- 嵌入数据与话题、帖子和用户等其他论坛数据一起存储在您的 Discourse 数据库中。
有哪些嵌入模型可用?
- Discourse AI 支持来自 OpenAI(
text-embedding-3-small、text-embedding-3-large)、Google(gemini-embedding-001)、Hugging Face 兼容的端点(bge-large-en、bge-m3、multilingual-e5-large)以及 Cloudflare Workers AI 的模型。您也可以通过管理界面配置自定义嵌入模型。
值得关注。
在审查一个英文网站(OpenAI)的“相关主题”中的许多帖子时,我开始注意到西班牙语主题倾向于被分组在一起,并怀疑如果它们首先被翻译成英文,每个帖子都会有不同的向量,从而与其他帖子聚集在一起。![]()
此功能对版主的一个附带好处是,可以检查“相关主题”中列出的主题类别是否正确。
在我审查每个新帖子时,我也会检查“相关主题”。这正成为识别创建时使用了错误类别的帖子的有效方法。
供参考 - 在此功能请求中也注意到了一个相关想法。
在经常需要查找以下链接但又不容易找到时找到此主题,在此记录。
这种行为由模型控制,并且似乎是一个已知问题:
我认为我们推荐的用于多语言网站的开源模型在这方面做得更好,但我们仍然需要将其推广给更多客户来验证这一点。
我无法启用此选项:
是我遗漏了什么,还是 Gemini 本身不够?
更新:说明和错误描述可能需要更新,以添加 ai embeddings model 也应更新以匹配提供商,否则 ai_embeddings_enabled 无法启用。参数描述缺少 Gemini 选项。
7 篇帖子已拆分为新主题:“Net::HTTPBadResponse” 错误(Gemini 嵌入)(/t/net-httpbadresponse-errors-on-gemini-embeddings/296952)
如果您使用 OpenAI,则无需填写。
其中大部分是空的。但是 ai embeddings discourse service api key 是您的 OpenAI API,而 ai embeddings discourse service api endpoint 是 https://api.openai.com/v1/embeddings。模型应该是 text-embedding-3-large(当然,也可以是 small,但它有一些问题)。
3 篇帖子已拆分为新主题:如何同时显示建议主题和相关主题
比较 small 和 large 的结果如何?我知道尺寸上的差异会影响模型的精度。small 版本便宜 5 倍。在实际应用中,它真的无法用于主题相似性吗?我们的论坛 99% 是英语内容。
我很想了解更多信息。您能否详细说明一下 all-mpnet-base-v2 在纯英语网站上与 OpenAI 模型相比的性能如何?
嵌入的成本非常低,以至于价格无关紧要——除非有大量的帖子,总成本中0.01美分也变得重要。
但说实话……我没有看到任何区别。对我来说,因为有可能我无法正确使用RAG和嵌入,两者都同样无用。我知道这与公众的看法大相径庭,但在我的网站上,这个系统就是找不到并使用任何有用的东西。
这可能源于OpenAI的模型,但我没有足够的钱来使用那些更专业的解决方案。
在我看到这个之前,我一直在使用 text-embedding-3-small 模型。text-embedding-ada-002 效果好很多吗?
Ada是上一代产品
一个帖子被拆分到了新的主题:Related Topics not translated



