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服务。
NLWeb实例同时作为MCP服务器,支持核心ask
方法处理自然语言查询。MCP作为聊天机器人与工具交互的新兴协议,与NLWeb的关系类似HTTP与HTML,前者定义交互规则,后者提供数据承载格式。
核心服务:处理自然语言查询逻辑,支持功能扩展与定制。
连接器:集成主流LLM和向量数据库的接口模块。
数据工具:支持将Schema.org JSONL、RSS等格式数据导入指定向量数据库。
前端服务:内置轻量级Web服务器及简易查询界面,生产环境建议使用自定义UI能直接集成代码到应用系统。
快速入门:包含本地部署、云平台(Azure等)部署指南。
技术文档:包括REST API规范、查询生命周期流程、提示词调整、界面修改等开发细节。
开源协议:采用MIT许可证,允许自由修改和商业使用。
确保已安装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/
尝试不同示例界面。