章节 01
导读 / 主楼:Wanda:为MediaWiki注入AI智能的问答机器人扩展
Wanda是一个MediaWiki扩展,为维基站点提供基于大语言模型的智能问答功能。它支持多种LLM提供商,结合Elasticsearch向量搜索,能够理解用户问题并从维基内容中检索相关信息生成回答。
正文
Wanda是一个MediaWiki扩展,为维基站点提供基于大语言模型的智能问答功能。它支持多种LLM提供商,结合Elasticsearch向量搜索,能够理解用户问题并从维基内容中检索相关信息生成回答。
章节 01
Wanda是一个MediaWiki扩展,为维基站点提供基于大语言模型的智能问答功能。它支持多种LLM提供商,结合Elasticsearch向量搜索,能够理解用户问题并从维基内容中检索相关信息生成回答。
章节 02
MediaWiki作为维基百科的开源引擎,被广泛用于构建企业知识库、技术文档站点和社区百科。然而,传统的关键词搜索在面对复杂问题时往往力不从心——用户需要知道确切的术语才能找到相关内容,而语义层面的关联则难以捕捉。
随着大语言模型的普及,一种更自然的交互方式成为可能:用户用自然语言提问,AI理解意图并从知识库中提取答案。这正是Wanda扩展所实现的核心能力。
章节 03
Wanda是由开发者fank维护的MediaWiki扩展,基于维基媒体基金会的官方版本进行了增强。该扩展为MediaWiki站点提供了完整的AI问答机器人功能,包括一个专用页面和一个浮动聊天组件。
与原版相比,这个分支增加了对OpenAI兼容端点的支持、针对Qwen3推理模型的适配优化,以及对真实维基内容场景的改进。它兼容MediaWiki 1.36及以上版本,支持PHP 7.4+。
章节 04
Wanda的实现遵循典型的RAG架构,将大语言模型的生成能力与Elasticsearch的检索能力相结合:
内容索引阶段:维基页面被处理并存储到Elasticsearch中,同时生成向量嵌入。这一步骤通过维护脚本ReindexAllPages.php完成,将整站内容转换为可语义搜索的向量表示。
查询处理阶段:当用户提问时,系统首先将问题转换为嵌入向量。如果嵌入服务不可用,则回退到传统的文本搜索。
相似度检索:Elasticsearch执行向量相似度搜索,找出与用户问题语义最相关的页面内容。
答案生成:检索到的相关内容被送入大语言模型,生成针对用户问题的自然语言回答。
这种架构的优势在于,回答完全基于维基的实际内容,有效避免了模型幻觉,同时保持了交互的自然性。
章节 05
Wanda设计上不绑定特定的AI服务,支持多种LLM提供商:
Ollama(自托管):适合对数据隐私有严格要求的场景。完全本地运行,无需外部API调用。
OpenAI:支持GPT系列模型,包括GPT-3.5-turbo和GPT-4。
Anthropic Claude:支持Claude系列模型,包括Claude 3 Haiku等。
Azure OpenAI:适合已使用Azure云服务的企业环境。
配置方式简洁明了,在LocalSettings.php中设置提供商类型、API密钥、模型名称和端点地址即可。例如,使用Ollama的配置如下:
$wgLLMProvider = 'ollama';
$wgLLMApiEndpoint = 'http://localhost:11434/api/';
$wgLLMModel = 'gemma:2b';
$wgLLMEmbeddingModel = 'nomic-embed-text';
章节 06
Wanda提供了两种用户界面,适应不同的使用习惯:
浮动聊天组件:以蓝色聊天气泡的形式固定在页面右下角,用户可随时点击展开对话。这种设计适合快速查询,不影响正常的阅读体验。
专用页面:通过Special:Wanda访问的完整功能界面,提供更宽敞的交互空间,适合复杂的多轮对话。
两种界面都采用了响应式设计,在桌面和移动设备上都能良好工作。
章节 07
部署Wanda需要以下基础设施:
安装流程遵循标准的MediaWiki扩展模式:将扩展文件放入extensions/目录,在LocalSettings.php中加载,运行更新脚本,然后执行内容索引。
章节 08
在企业环境中部署AI问答系统时,数据安全是首要考虑。Wanda在这方面提供了多种选择:
API密钥管理:所有密钥都存储在MediaWiki配置文件中,不会暴露在客户端。
自托管选项:通过Ollama支持,敏感内容可以完全在内部网络处理,无需发送到外部API。
超时与限流:可配置适当的超时时间和速率限制,防止资源滥用。
内容边界:回答严格基于索引的维基内容,不会引入外部知识,降低了信息泄露风险。