AI

Quivr 本地私有化部署:从多格式文档解析到自建 RAG 知识库

把公司内部的合同、技术手册、会议纪要统一丢进一个系统,然后像聊天一样随时问它“去年 Q3 的服务器采购条款是什么”,这大概是很多团队对知识库的终极想象。但一旦涉及敏感数据,把文档传到云端 SaaS 服务里往往意味着合规风险。Quivr 正是为解决这个矛盾而生的开源项目——它把检索增强生成(RAG)能力打包成一个完整平台,让你可以在自己的服务器上跑起一个“第二大脑”,文档不出内网,答案照样精准。

Quivr 的核心定位是“开源的 GenAI 第二大脑”,本质上是一个全栈 RAG 应用。它不是一个简单的 Python 库,而是包含了前端界面、后端 API、向量数据库和文档解析管道的完整系统。你可以通过浏览器上传 PDF、Markdown、Word 文件,系统会自动完成切片、向量化并存入知识库,之后就能以对话方式检索提问。相比从零搭建 LangChain 管道,Quivr 最大的价值在于把“能跑通的 RAG 系统”这件复杂事,压缩成了几条 Docker 命令。

部署前的硬件与架构认知

在动手敲命令之前,先想清楚一个关键问题:你的文档要存在哪里,模型要跑在哪里。Quivr 本身支持多种部署形态,但私有化部署的核心诉求通常是“数据不出内网”,这意味着你需要本地运行大模型,而不是调用 OpenAI 等云端 API。

这里有个容易被忽略的点:Quivr 的架构里,向量化(Embedding)和生成回答(LLM)是两个独立环节。你可以用本地模型做 Embedding,同时用云端模型做生成,也可以全部本地化。如果追求完全离线,两者都需要本地跑。硬件门槛主要取决于你选的模型大小——7B 参数的量化模型通常需要至少 8GB 显存,13B 模型建议 16GB 以上,如果跑 70B 级别模型,单卡 24GB 是起步线。CPU 推理不是不行,但长文档检索的响应延迟会明显拉高,体验会打折扣。

用 Docker 拉起 Quivr 全家桶

Quivr 官方提供了完整的 Docker Compose 配置,这是目前最省心的部署路径。整个栈包含前端(Next.js)、后端(FastAPI)、PostgreSQL(元数据存储)、Supabase(认证与存储)以及向量数据库。默认情况下,Quivr 使用 Supabase 作为其后端服务,但私有化部署时你需要用自托管的 Supabase 容器替代云服务。

部署的第一步是克隆仓库并准备环境变量文件:

纯文本
git clone https://github.com/QuivrHQ/quivr.git
cd quivr
cp .env.example .env

在 .env 文件中,你需要修改几个核心配置项。首先是 POSTGRES_USER、POSTGRES_PASSWORD 和 POSTGRES_DB,这些是数据库的访问凭证。其次是 JWT_SECRET_KEY,用于生成认证令牌,务必改成足够随机的长字符串。接着是 SUPABASE_URL 和 SUPABASE_SERVICE_ROLE_KEY,在自托管模式下,它们指向本地运行的 Supabase 容器地址,默认通常是 http://supabase:8000。

配置完成后,执行:

纯文本
docker compose up -d

首次启动会拉取多个镜像,耗时取决于网络状况。全部容器进入运行状态后,访问 http://localhost:3000 即可看到 Quivr 的登录界面。首次访问需要注册账号,这个账号会保存在本地 Supabase 实例中,不会外传。

配置 Megaparse 解析管道:长文档切片的关键

文档解析质量直接决定检索效果。Quivr 默认使用内部的解析逻辑,但对长文档(比如几十页的 PDF)经常出现切片不理想、上下文断裂的问题。Quivr 集成了 Megaparse 作为增强解析方案,专门优化了 PDF、DOCX 等格式的版面分析和语义切分。

Megaparse 的核心优势在于智能切片。普通 RAG 管道按固定字符数硬切,很容易把一句话或一个表格从中间切断,导致向量化后语义失真。Megaparse 会先做版面分析,识别标题、段落、表格、页眉页脚,然后基于语义边界切片,每个 chunk 尽量保持完整语义单元。

在 Quivr 中启用 Megaparse,需要在 .env 中设置:

纯文本
MEGAPARSE_API_KEY=your_key

不过要注意,Megaparse 本身有云端 API 和本地开源版本之分。完全离线部署时,你需要运行自托管的 Megaparse 服务,并在 Quivr 的后端配置中把解析端点指向本地地址。具体做法是在 quivr-backend 容器的环境变量中设置:

纯文本
MEGAPARSE_URL=http://megaparse:8080

这样上传的文档会先经过本地 Megaparse 完成解析和切片,再进入向量化环节。对于动辄上百页的技术手册,这一步能显著减少后续检索时的“答非所问”。

连接本地大模型:Ollama 与 API 调优

Quivr 通过 LLM_SUPPLIER 环境变量决定使用哪家模型服务。选择 ollama 时,配置如下:

纯文本
LLM_SUPPLIER=ollama
OLLAMA_API_BASE_URL=http://ollama:11434
OLLAMA_MODEL=llama3.1:8b

同时还需要指定 Embedding 模型。Quivr 支持通过 Ollama 加载 Embedding 模型,比如 nomic-embed-text 或 bge-m3:

纯文本
EMBEDDING_SUPPLIER=ollama
EMBEDDING_MODEL=nomic-embed-text

这里有一个实践建议:生成模型和 Embedding 模型不要共用同一个模型。生成模型追求对话质量和推理能力,Embedding 模型追求语义表征的维度与区分度,混用会导致检索质量下降。

连接完成后,在 Quivr 的“设置”页面里把模型供应商切换为 Ollama,并选择已经拉取到本地的模型。第一次提问时会明显感觉到响应速度比云端 API 慢,这是本地推理的正常现象。如果延迟过高,可以调整 CHUNK_SIZE 和 CHUNK_OVERLAP 参数——默认切片大小是 1200 字符,重叠 200 字符,对中文文档建议把 CHUNK_SIZE 降到 800 左右,减少单次送入模型的 token 数,能有效降低首 token 延迟。

长文档切片失真与检索延迟的排错思路

部署完成后,最常见的两个问题是“检索结果不相关”和“回答太慢”,两者往往相互关联。

切片失真的典型表现是:文档明明包含答案,但模型答非所问。排查时先确认 Megaparse 是否真正生效——上传一个带复杂表格的 PDF,在 Quivr 后台查看解析后的文本块,如果表格被拆得七零八落,说明解析管道没走对。另一种可能是 Embedding 模型对中文支持不佳,nomic-embed-text 的中文效果只能说够用,换成 bge-m3 或 bge-large-zh 会有明显改善。

检索延迟的瓶颈通常在向量检索环节。Quivr 默认使用 PostgreSQL 的 pgvector 扩展做相似度检索,当文档数量超过几万条 chunk 时,暴力扫描的耗时就会凸显。解决思路有两个:一是调低 RETRIEVAL_K 值(默认返回 10 条),减少后续重排和生成的负载;二是为向量字段建立 HNSW 索引:

纯文本
CREATE INDEX ON vectors USING hnsw (embedding vector_cosine_ops);

这个索引能把检索时间从线性扫描降到对数级别,对知识库体量增长后的体验提升非常明显。

Quivr 的私有化部署并不复杂,但也不是开箱即用的零配置工具。它适合那些对数据主权有明确要求、并且愿意花半天时间折腾环境的团队。如果你只是想快速验证 RAG 效果,用云端 API 跑通再迁移到本地是更平滑的路径。而一旦完成本地化落地,文档留在内网、模型跑在自己的显卡上,这种“完全可控”的安全感,是任何 SaaS 知识库都给不了的。

热门话题

52okp 是一名关注人工智能、开源软件与效率工具的技术内容创作者,长期实践 Stable Diffusion、ComfyUI、AI 智能体、MCP、Codex 和各类开源项目。通过实际安装、配置与测试,整理可复现的操作教程、问题排查方法和工具使用经验。

登录用户才能发表评论! 登录账户

取消回复

评论列表 (1条):

加载更多评论 Loading...

延伸阅读:

Open WebUI 本地大模型前端怎么用:从连接到多模型切换的落地检查

你已经用 Ollama 在本机跑通了模型,却还得靠终端逐条提问;想回看一次对话、让同事试用,或在几个模型之间切换,都不够...

52okp
2026-10-21

Dify 自托管入门:从部署到搭建一个可验证的 AI 应用

Dify 是搭建内部 AI 应用原型的常见选择,但第一次自托管时,真正耗时的往往是环境依赖、容器启动和初始化配置。本文按...

52okp
2026-10-09

LocalAI 私有化部署评估:先验证模型兼容性,再接入现有应用

很多开发者第一次尝试私有化部署时,流程往往是:拉起服务,把现有应用的 base_url 改成本地地址,然后在业务代码里逐...

52okp
2026-10-12

如何挑选自动文件整理工具:按隐私要求、规则复杂度和上手成本做试用

文件越堆越多,手动整理耗时费力,但自动工具选错更麻烦:规则型配置死板,云端AI又不得不把内容交给第三方。这篇教程不按功能...

52okp
2026-10-09

用 Dify 搭建 RAG 应用前,先想清楚数据、检索与评估这三件事

在搭建 AI 应用时,许多开发者都遇到过一个共同的难题:明明花了很多时间上传了知识库数据,却发现 AI 回答总是跑偏,或...

52okp
2026-10-22
    返回顶部