NLweb本地部署指南
NLWeb 本地部署指南
NLWeb 是 Microsoft NLDev 团队 开源的一套自然语言驱动的 Web 应用开发框架,旨在通过自然语言(Natural Language)交互方式,实现对 Web 应用的理解、控制和问答。
🔍 核心功能
- 自然语言问答接口:用户可直接以自然语言提问,系统会从文档或网页数据中检索并生成回答。
- 文档解析与索引:支持 RSS、网页、文本等格式的文档接入和向量化处理。
- 向量搜索引擎集成:支持 Qdrant 等本地或云端向量数据库,进行语义检索。
- 插件式配置:LLM 服务、嵌入服务、检索服务都可以通过配置快速切换(支持 OpenAI、Azure、Snowflake 等)。
- 模块化设计:配置清晰,部署灵活,支持多种部署方式。
🧩 应用场景
- 企业知识库问答系统
- 智能客服或辅助系统
- 内容聚合与摘要平台
- 自然语言交互式信息查询前端
🚀 技术栈与架构
- 前端 UI:React + Tailwind(可扩展)
- 后端服务:FastAPI + Python 脚本工具
- 数据层支持:本地向量数据库(如 Qdrant)或云服务
- LLM 支持:OpenAI GPT、Azure OpenAI、Snowflake Arctic 等
官方仓库:
🔗 https://github.c
om/microsoft/NLWeb/tree/main
✨ 环境准备
本地部署需要以下组件:
- LLM 服务提供商:OpenAI
- 嵌入向量服务提供商:OpenAI
- 向量检索数据库:本地 Qdrant
📖 参考文档:OpenAI API 官方文档
📦 安装 Python 环境
请参考官方文档中的 Hello World 示例 完成依赖安装和环境初始化。
⚙️ 配置 .env
环境变量
以 OpenAI 为例,首先访问 OpenAI API 官网,获取 OPENAI_API_KEY
。
编辑 .env
文件,将以下内容粘贴至 NLWeb/code/.env
中,并根据需求进行修改:
# Qdrant 本地向量数据库
QDRANT_URL="http://localhost:6333"
QDRANT_API_KEY=""# OpenAI GPT 接口
OPENAI_ENDPOINT="https://api.openai.com/v1/chat/completions"
OPENAI_API_KEY=""# OpenAI 嵌入模型(如使用 Azure,请填写以下项)
AZURE_OPENAI_ENDPOINT=""
AZURE_OPENAI_API_KEY=""# 可选:Snowflake 嵌入服务(如不使用可留空)
SNOWFLAKE_ACCOUNT_URL=""
SNOWFLAKE_PAT=""
SNOWFLAKE_EMBEDDING_MODEL=snowflake-arctic-embed-l-v2.0
SNOWFLAKE_CORTEX_SEARCH_SERVICE=""# 日志级别配置
NLWEB_LOGGING_PROFILE=development# 可选:本地输出目录
# NLWEB_OUTPUT_DIR=./output
📂 启动本地 Qdrant 向量数据库
NLWeb 使用 Qdrant 作为向量索引服务。你可以通过以下任一方式快速在本地部署 Qdrant:
✅ 推荐方式:使用 Docker 运行 Qdrant
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
- 默认地址:
http://localhost:6333
- 你可以通过访问
http://localhost:6333/healthz
验证是否启动成功(返回OK
即为正常)
💾 Docker Compose(支持数据持久化)
新建一个 docker-compose.yml
文件:
version: '3.8'
services:qdrant:image: qdrant/qdrantports:- "6333:6333"- "6334:6334"volumes:- ./qdrant_data:/qdrant/storage
启动服务:
docker-compose up -d
🔗 安装 Qdrant Python 客户端(可选)
如需在 Python 中直接访问 Qdrant,可执行以下命令:
pip install qdrant-client
🧪 测试向量数据库是否运行正常
一旦 Qdrant 启动成功,可以使用 NLWeb 提供的测试命令导入数据:
cd code
python -m tools.db_load https://feeds.libsyn.com/121695/rss Behind-the-Tech
🛠️ 配置服务文件
NLWeb 的服务配置主要分为以下三类:
config_llm.yaml
preferred_provider: openai
config_embedding.yaml
preferred_provider: openai
config_retrieval.yaml
preferred_endpoint: qdrant_local
📁 文件放置路径:
文件名 | 路径 |
---|---|
.env | NLWeb/code/.env |
config_llm.yaml | NLWeb/code/config/config_llm.yaml |
config_embedding.yaml | NLWeb/code/config/config_embedding.yaml |
config_retrieval.yaml | NLWeb/code/config/config_retrieval.yaml |
🚀 启动服务
在 NLWeb/code/
目录下运行:
python app-file.py
运行成功后将看到以下界面:
✅ 至此,NLWeb 本地部署完成。