Discourse AI 相关话题

:bookmark: 本指南介绍如何启用和配置 Discourse AI 插件的相关主题功能。

:person_raising_hand: 所需用户级别:管理员

相关主题通过根据用户正在阅读的主题推荐语义上相似的主题来帮助用户发现相关内容。这增强了内容探索并提高了用户参与度。

功能

  • 语义文本相似度:超越关键词匹配,查找真正相关的内容
  • 在“建议”和“相关”主题之间切换
  • 对匿名和已登录用户均可用

启用相关主题

:information_source: 对于启用了 Discourse AI 插件的所有 Discourse 托管客户,相关主题默认开启。

先决条件

相关主题需要 Embeddings 才能运行。

如果您使用我们的托管服务,Embeddings 将使用开源模型提供。无需额外设置。

自托管实例需要通过第三方提供商提供自己的 Embeddings。

配置

  1. 转到管理 → 设置 → 插件
  2. 搜索“discourse-ai”并确保已启用
  3. 启用 ai_embeddings_enabled 以激活 Embeddings
  4. 启用 ai_embeddings_semantic_related_topics_enabled 以激活相关主题功能

其他配置

根据您的设置,您可能需要调整以下设置:

  • 对于非英语网站(Discourse 托管或自托管并使用自有模型):
    ai embeddings model 设置为 multilingual-e5-large
  • 对于 Cloudflare Workers AI:
    ai embeddings model 设置为 bge-large-en
  • 对于 OpenAI 或 Azure OpenAI:
    ai embeddings model 设置为 text-embedding-ada-002

技术常见问题解答

展开查看相关主题架构图

概述是,当创建/更新主题时,会发生以下情况:

sequenceDiagram
    User->>Discourse: 创建主题
    Discourse-->>Embedding Microservice: 生成 embeddings
    Embedding Microservice-->>Discourse:
    Discourse-->>PostgreSQL: 存储 Embeddings

在访问主题期间:

sequenceDiagram
    User->>Discourse: 访问主题
    Discourse-->>PostgreSQL: 查询最接近的主题
    PostgreSQL-->>Discourse:
    Discourse->>User: 展示相关主题

相关主题如何工作?

  • 当用户访问一个主题时,Discourse 会根据其嵌入表示在数据库中查询语义上最相似的主题。然后将这些相关主题呈现给用户,鼓励他们进一步探索社区的内容。

主题/帖子数据如何处理?

  • 对于 Discourse 托管的网站,数据在我们的安全虚拟专用数据中心内处理。对于自托管的网站,数据处理取决于您选择的第三方提供商。

Embeddings 数据存储在哪里?

  • Embeddings 数据与主题、帖子和用户等其他论坛数据一起存储在您的 Discourse 数据库中。

使用了什么语义模型,它是如何训练的?

  • Discourse 托管的网站默认使用 all-mpnet-base-v2 模型。该模型在小众和通用社区中都表现良好。自托管网站可能会根据其选择的提供商使用不同的模型。
14 个赞

值得关注。

在审查一个英文网站(OpenAI)的“相关主题”中的许多帖子时,我开始注意到西班牙语主题倾向于被分组在一起,并怀疑如果它们首先被翻译成英文,每个帖子都会有不同的向量,从而与其他帖子聚集在一起。:slightly_smiling_face:



此功能对版主的一个附带好处是,可以检查“相关主题”中列出的主题类别是否正确。

在我审查每个新帖子时,我也会检查“相关主题”。这正成为识别创建时使用了错误类别的帖子的有效方法。

供参考 - 在此功能请求中也注意到了一个相关想法。



在经常需要查找以下链接但又不容易找到时找到此主题,在此记录。

2 个赞

这种行为由模型控制,并且似乎是一个已知问题:

我认为我们推荐的用于多语言网站的开源模型在这方面做得更好,但我们仍然需要将其推广给更多客户来验证这一点。

2 个赞

我无法启用此选项:

是我遗漏了什么,还是 Gemini 本身不够?

更新:说明和错误描述可能需要更新,以添加 ai embeddings model 也应更新以匹配提供商,否则 ai_embeddings_enabled 无法启用。参数描述缺少 Gemini 选项。

1 个赞

7 篇帖子已拆分为新主题:“Net::HTTPBadResponse” 错误(Gemini 嵌入)(/t/net-httpbadresponse-errors-on-gemini-embeddings/296952)

请问这里要填什么:

我想启用上面显示的 4 个选项中的第一个:

如果您使用 OpenAI,则无需填写。

1 个赞

那么这个第一个选项(Embeddings Module)让我很困扰,它不允许我启用它:

其中大部分是空的。但是 ai embeddings discourse service api key 是您的 OpenAI API,而 ai embeddings discourse service api endpointhttps://api.openai.com/v1/embeddings。模型应该是 text-embedding-3-large(当然,也可以是 small,但它有一些问题)。

1 个赞

3 篇帖子已拆分为新主题:如何同时显示建议主题和相关主题

比较 smalllarge 的结果如何?我知道尺寸上的差异会影响模型的精度。small 版本便宜 5 倍。在实际应用中,它真的无法用于主题相似性吗?我们的论坛 99% 是英语内容。

我很想了解更多信息。您能否详细说明一下 all-mpnet-base-v2 在纯英语网站上与 OpenAI 模型相比的性能如何?

嵌入的成本非常低,以至于价格无关紧要——除非有大量的帖子,总成本中0.01美分也变得重要。

但说实话……我没有看到任何区别。对我来说,因为有可能我无法正确使用RAG和嵌入,两者都同样无用。我知道这与公众的看法大相径庭,但在我的网站上,这个系统就是找不到并使用任何有用的东西。

这可能源于OpenAI的模型,但我没有足够的钱来使用那些更专业的解决方案。

1 个赞

在我看到这个之前,我一直在使用 text-embedding-3-small 模型。text-embedding-ada-002 效果好很多吗?

Ada是上一代产品

1 个赞