NVIDIA文档智能系统

一个集成了爬虫、聊天机器人UI和MCP服务器的NVIDIA文档智能系统,旨在帮助开发者更方便地查询和理解NVIDIA的技术文档。

  • by gioppino
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 gioppino/nvidia-docs-iq

使用说明

NVIDIA Docs IQ-!!WIP!!

个人学习项目 吉奥皮诺.

我是一名谦逊的开发人员,试图通过构建来学习NVIDIA AI堆栈——NIM、Milvus、RAG、MCP 一些我自己也会觉得有用的东西。如果它对少数人也有用, 那已经是超出我预期的成功了。

根据以下许可 GPL-3.0 (参见 LICENSE).免费使用、修改和改编。 非常欢迎提供意见和建议——请参阅问题跟踪器。


NVIDIA文档智能系统 ,具有用于IDE集成的scraper、聊天机器人UI和MCP服务器。

它做什么

  • 刮痕 developer.nvidia.com(docs,API参考资料),具有相互尊重的节流
  • RAG管道 使用NVIDIA堆栈:NIM嵌入、Milvus矢量存储、NIM重链器+LLM
  • MCP服务器 与Cursor、Claude Desktop、Continue、Zed兼容——IDE中的NVIDIA文档
  • 聊天机器人用户界面 (Gradio)用于文档的自然语言问答
  • KAG层 (Neo4j知识图)计划用于第二阶段——见 docs/kag-layer.md

为什么这个项目

NVIDIA的文档数量庞大,分布在数十个子网站上。我发现自己总是 编码时在页面之间跳转。这是我试图减轻痛苦的尝试-- 首先是我自己,也许还有其他几个人。

该堆栈与官方NVIDIA RAG蓝图中使用的堆栈相似。主要添加了 MCP服务器, 我还没有在任何NVIDIA相邻项目中看到它——它让你的IDE查询 编写代码时直接执行文档。

技术栈

组件 技术
嵌入 nvidia/llama-3.2-nv-embedqa-1b-v2 (NIM API)
重新排名 nvidia/llama-3.2-nv-rerankqa-1b-v2 (NIM API)
LLM meta/llama-3.3-70b-instruct (NIM API/build.nvidia.com)
Vector DB Milvus+cuVS(Milvus Lite用于开发,独立Docker用于生产)
RAG框架 朗链+朗链nvidia ai端点
Scraper Playwright(异步Python)+PostgreSQL队列
UI Gradio
MCP Python MCP SDK(FastMCP)

硬件

  • 图形处理器:RTX 3090(24GB VRAM)——用于Milvus cuVS GPU索引操作
  • 随机存取存储器:16GB+(Milvus单机版)
  • 存储:50GB用于引导语料库(CUDA+NIM+NeMo文档)
  • AI模型不需要本地GPU:通过NIM API的所有嵌入/重新链接器/LLM(build.nvidia.com上的免费层)

快速开始

选项A——零Docker(建议首次运行)

用途 Milvus 精简版 (基于文件的矢量存储,不需要Docker)和 API 适用于所有AI模型(免费版 build.nvidia.com).

# 1. Install dependencies
pip install -r requirements.txt
playwright install chromium

# 2. Configure
cp .env.example .env
# Edit .env:
#   NVIDIA_API_KEY=nvapi-...    ← get from https://build.nvidia.com
#   MILVUS_MODE=lite            ← already the default

# 3. Start PostgreSQL only (needed for the crawler queue)
docker compose up -d postgres

# 4. Crawl the bootstrap corpus (CUDA docs — ~100 pages)
#    DSN must match your .env (default from docker-compose: nvdociq:password)
python -m scraper.crawler_integration \
    --scope https://docs.nvidia.com/cuda/ \
    --max-pages 100 \
    --dsn postgresql://nvdociq:password@localhost:5432/nvdociq

# 5. Ingest into Milvus Lite
python -m ingestion.pipeline --source data/raw/ --workers 4

# 6a. Launch chatbot UI
python ui/app.py          # → http://localhost:7860

# 6b. OR use MCP server in Cursor / Claude Desktop
#     Copy .cursor/mcp.json.example → .cursor/mcp.json and set your path
python -m mcp_server.server

选项B——使用Docker的全栈(演示/生产)

用途 Milvus单机版 GPU加速(cuVS)用于更大的语料库。

# 1-2. Same as above

# 3. Start full infrastructure (Milvus + PostgreSQL)
docker compose up -d

# 4-6. Same as above, but set in .env:
#   MILVUS_MODE=standalone

MCP服务器

MCP服务器公开了4个工具:

工具 说明
search_docs 在所有索引的NVIDIA文档中进行语义搜索
api_reference 按名称查找特定的API函数/类
code_examples 查找任务或API使用模式的代码示例
explain 从官方文档中获取一个概念的引用解释

加上2个提示: review_cuda_code 和 cuda_quickstart.

IDE设置——复制示例并填写路径:

开源代码 (opencode.json,忽略):

cp opencode.json.example opencode.json
# edit the two absolute paths inside

光标 (.cursor/mcp.json,忽略):

cp .cursor/mcp.json.example .cursor/mcp.json
# edit the paths inside

克劳德桌面版 (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "nvidia-docs": {
      "command": "/absolute/path/to/nvidia-docs/.venv/bin/python",
      "args": ["-m", "mcp_server.server"],
      "cwd": "/absolute/path/to/nvidia-docs"
    }
  }
}

注: opencode.json 和 .cursor/mcp.json 包含绝对路径并且是gitignore。 已提交的示例如下 opencode.json.example 和 .cursor/mcp.json.example.

项目结构

nvidia-docs/
├── config/
│   └── settings.py           # Pydantic settings (loads .env)
├── scraper/
│   ├── crawler_integration.py # Playwright async crawler
│   └── storage/
│       ├── db.py              # PostgreSQL scrape state
│       └── raw.py             # Filesystem HTML storage
├── ingestion/
│   ├── parser.py              # HTML → ParsedDocument (readability + markdownify)
│   ├── chunker.py             # Code-aware chunking → Chunk objects
│   └── pipeline.py            # Orchestrates parse → chunk → embed → Milvus
├── storage/
│   └── vector_store.py        # MilvusVectorStore (upsert, search, count)
├── rag/
│   ├── retriever.py           # embed → ANN search → rerank
│   ├── generator.py           # prompt builder + NIM LLM streaming
│   └── pipeline.py            # RAGPipeline with in-memory session memory
├── mcp_server/
│   ├── server.py              # FastMCP server (stdio transport)
│   └── tools.py               # Tool implementations (search, api_ref, etc.)
├── ui/
│   └── app.py                 # Gradio chatbot
├── docs/                      # Design documentation
├── data/
│   ├── raw/                   # Scraped HTML files
│   └── milvus_lite.db         # Milvus Lite file (dev mode)
├── docker-compose.yml         # Milvus + PostgreSQL
├── requirements.txt
└── .env.example

文档

文件 内容
docs/ide-setup.md 如何将MCP服务器连接到OpenCode、Cursor、Claude Desktop
docs/architecture.md 系统架构、数据流
docs/roadmap.md 发展阶段和现状
docs/models.md NIM模型、VRAM预算、本地推理选项
docs/infra.md Docker Compose、Milvus Lite与独立版
docs/scraper.md 抓取策略、限制、URL队列
docs/introdon.md HTML解析、代码感知分块
docs/rag-pipeline.md RAG管道详图
docs/mcp-server.md MCP工具、IDE集成
docs/kag-layer.md 第二阶段:Neo4j知识图谱

这不是什么

这不是竞争对手 NVIDIA RAG蓝图 或任何企业产品。这些是由工程师团队为生产用例构建的。 这是一个独立的学习项目,建立在同一个堆栈之上,针对单个开发人员 使用单个GPU,可以更轻松地浏览NVIDIA文档。

如果你在英伟达工作,在这里绊倒了:你好,请随时指出任何问题 我做错了,我在学习。