NLWeb是微软推出的开源项目,目标是降低网站集成对话接口的门槛。NLWeb通过一套开放协议和配套工具,利用Schema.org等半结构化格式,将自然语言交互与网页数据语义层结合,为AI Web奠定基础。通过简单协议实现自然语言与网站的交互,借助JSON和Schema.org格式规范返回结果,兼容MCP协议,使同一套自然语言API可被人类和智能代理共同使用。

双组件架构

1、交互协议

定义基础通信规则,支持自然语言查询网站内容,返回结果采用Schema.org格式标准化数据结构,便于机器解析和人类程序员理解。

2、实现工具集

提供基于现有标记的简易实现方案,适用于产品列表、菜谱、景点等结构化内容场景,通过配套用户界面组件,能帮助网站快速部署对话接口。

跨平台

操作系统:已在Windows、macOS、Linux系统验证运行。

向量存储:支持Qdrant、Snowflake、Milvus、Azure AI Search等多种存储方案。

大语言模型:兼容OpenAI、Deepseek、Gemini、Anthropic等主流LLM服务。

与MCP协议的协同

NLWeb实例同时作为MCP服务器,支持核心ask方法处理自然语言查询。MCP作为聊天机器人与工具交互的新兴协议,与NLWeb的关系类似HTTP与HTML,前者定义交互规则,后者提供数据承载格式。

代码仓库

核心服务:处理自然语言查询逻辑,支持功能扩展与定制。

连接器:集成主流LLM和向量数据库的接口模块。

数据工具:支持将Schema.org JSONL、RSS等格式数据导入指定向量数据库。

前端服务:内置轻量级Web服务器及简易查询界面,生产环境建议使用自定义UI能直接集成代码到应用系统。

文档与支持

快速入门:包含本地部署、云平台(Azure等)部署指南。

技术文档:包括REST API规范、查询生命周期流程、提示词调整、界面修改等开发细节。

开源协议:采用MIT许可证,允许自由修改和商业使用。

NLWeb本地部署指南

确保已安装Python 3.10及以上版本。

1、克隆代码仓库

git clone https://github.com/microsoft/NLWeb
cd NLWeb

2、创建并激活虚拟环境

python -m venv myenv
# Linux/macOS系统
source myenv/bin/activate
# Windows系统
myenv\Scripts\activate

3、安装依赖

cd code
pip install -r requirements.txt

4、配置环境文件

复制模板文件:cp .env.template .env

编辑.env文件,填入所选LLM的API密钥(如Azure OpenAI)。

调整配置文件:

config_llm.yaml:指定LLM提供商及模型(默认Azure OpenAI的4.1系列)。

config_embedding.yaml:选择嵌入模型提供商(默认Azure OpenAI的text-embedding-3-small)。

config_retrieval.yaml:设置为qdrant_local以使用本地向量数据库。

5、加载测试数据

使用tools.db_load工具导入RSS feed数据,示例:

# 加载Kevin的播客数据
python -m tools.db_load https://feeds.libsyn.com/121695/rss Behind-the-Tech
# 加载Verge的播客数据
python -m tools.db_load https://feeds.megaphone.fm/recodedecode Decoder

6、启动服务

python app-file.py

访问http://localhost:8000即可测试对话接口,也可通过http://localhost:8000/static/尝试不同示例界面。