jolibrain/colette
Multimodal RAG to search and interact locally with technical documents of any kind
Colette – 自托管视觉-RAG平台
是什么 – Colette 是一个开源、自托管的检索增强生成(RAG)系统,允许您在不将任何数据发送到外部API的情况下索引和查询技术文档。其独特之处在于 视觉-RAG:文档的每一页都被视为图像,因此表格、图表、示意图和布局得以完整保留,并可通过基于视觉的嵌入进行搜索。
核心功能
- 视觉-RAG(V-RAG) – 使用视觉嵌入模型(如
gme-Qwen2-VL)和多模态大语言模型(如Qwen3-VL)对页面级图像进行嵌入并检索。 - 混合检索 – 并行运行向量搜索引擎(ChromaDB/ColDB)和BM25词法引擎(Tantivy),适用于产品代码、零件编号等场景。
- HyDE(假设文档嵌入) – 可选地,使用LLM生成一个简短的“假设答案”,并嵌入该答案而非原始问题,从而提升技术查询的召回率。
- 纯文本RAG – 使用
unstructured+langchain的经典流程,适用于无需基于图像处理的文档。 - 多后端LLM支持 – 支持HuggingFace、vLLM、Ollama以及自定义的
vllm_client。 - 图像生成 – 通过
diffusers集成Stable Diffusion,支持视觉输出。 - 布局检测 – 自动将页面裁剪为
text、figure、table或full_page区域,实现对结果的细粒度过滤。 - Docker化部署 – 提供就绪运行的镜像(
colette_gpu、colette_gpu_server、colette_ui)及用于构建/发布的CI流水线。
架构快照 – README中包含一张图,展示了三个主要组件:(1) 摄入(PDF → 图像裁剪 → 视觉/文本嵌入),(2) 存储(向量数据库 + BM25索引),(3) 推理(LLM使用检索到的上下文生成答案)。所有组件均可通过JSON文件配置。
典型工作流
- 安装 – 推荐使用Docker或Python虚拟环境。需要Python ≥ 3.12、CUDA ≥ 12.1,以及至少24GB VRAM的GPU(或通过配置使用轻量模型)。
- 索引 –
colette_cli index …指向PDF文件夹;系统将创建图像裁剪,运行视觉/文本编码器,并存储嵌入。 - 查询 –
colette_cli chat …或Python API(JSONApi、APIData)发送问题;系统检索相关图像/文本块(嵌入、BM25或混合),并将其输入LLM,返回文本答案及源图像。
技术栈
- 语言:Python(核心逻辑、CLI、API)和Bash(Docker包装器)。
- 视觉模型:Qwen风格的多模态编码器。
- LLM后端:HuggingFace Transformers、vLLM、Ollama。
- 向量存储:ChromaDB或自定义
coldb。 - 词法搜索:Tantivy(基于Rust的BM25)。
- 容器化:Docker + Docker-Compose;CI通过Jenkins实现。
- 可选GPU加速图像生成:Diffusers(Stable Diffusion)。
部署难度 – 中等到高。Docker镜像抽象了大部分依赖,但默认配置需要高端GPU。仓库提供适用于x86、ARM和DGX机器的虚拟环境设置脚本,以及详细的CLI示例和用于调试的Jupyter笔记本。
适用人群
- 需要查询专有技术手册、航空航天文档、示意图等PDF,且视觉布局至关重要、数据不能离开本地的企业或研究团队。
- 需要严格保密性的内部知识库助手开发团队。
- 正在实验多模态RAG流程并希望使用即开即用、可配置的开发栈的开发者。
成熟度 – 项目由Jolibrain、CNES和Airbus支持,包含CI流水线、Docker镜像和较为全面的文档网站。对于自托管使用已具备生产就绪状态,但硬件要求(≥24GB VRAM)限制其仅适用于工作站级或服务器级GPU。
快速开始(Docker)
# 拉取镜像
docker pull docker.jolibrain.com/colette_gpu:latest
# 创建文件夹
mkdir -p models app_colette docs/pdf
# 索引PDF
docker run --gpus all -v $(pwd):/rag -v $(pwd)/docs/pdf:/data -v $(pwd)/models:/app/models \
docker.jolibrain.com/colette_gpu \
bash -c "colette_cli index --app-dir /rag/app_colette --data-dir /data --config-file src/colette/config/vrag_default_lite.json --models-dir /app/models"
# 提问
docker run --gpus all -v $(pwd):/rag -v $(pwd)/app_colette:/app/app_colette -v $(pwd)/models:/models \
docker.jolibrain.com/colette_gpu \
bash -c "colette_cli chat --app-dir app_colette --models-dir /models --msg \"What are the identified sources of errors of a RAG?\""
资源
相关
- 项目
- 项目