腾讯开源WeKnora:解决企业文档检索难题的RAG框架
腾讯开源WeKnora是生产级RAG文档检索框架,集成PostgreSQL向量存储和Elasticsearch混合检索,提供两阶段重排序机制。基于Go和Python开发,支持Docker一键部署,适用于企业知识库、客服系统等场景。
上周在GitHub刷到腾讯新开源的WeKnora项目,Star增长挺快。点进去看了下,发现这不是那种Demo性质的项目,而是可以直接部署到生产环境的完整方案。
转自:https://yunpan.plus/t/485-1-1解决什么问题
公司里堆着几百上千份PDF、Word文档,传统搜索只能匹配关键词,经常找不到想要的内容。WeKnora做的就是让AI理解这些文档,用自然语言提问就能精准找到答案。
举个例子:你问"Q3财报里提到的增长策略是什么",它会从几百页PDF里定位相关段落,然后用大模型生成一段摘要直接回答你。这比自己翻文档快多了。
技术实现
云栈社区 ( YunPan.Plus ) 本文首发整个系统分四层,每层职责很明确:
文档解析:支持PDF、Word、Markdown、图片等格式,通过OCR把内容提取出来
向量处理:把文字转成向量(一串数字),这样计算机才能理解语义。支持BGE、GTE这些常用模型
检索引擎:用PostgreSQL的pgvector扩展存向量,Elasticsearch做关键词搜索,两种方式配合使用
LLM推理:接入通义千问、DeepSeek等大模型,根据检索结果生成最终答案
技术栈方面,主服务用Go写的,重排序部分用Python,数据库是PostgreSQL,搜索引擎用Elasticsearch。整套系统通过Docker Compose编排,一条命令就能跑起来。
Go语言云原生微服务学习 https://yunpan.plus/t/26
几个亮点
混合检索
不只用一种检索方式,而是把三种策略结合起来:BM25关键词匹配(传统方法)、向量语义检索(AI理解)、GraphRAG图谱检索(关系推理)。可以根据实际场景选择或组合使用。
两阶段排序
第一轮粗排从库里召回100条候选结果,第二轮用Cross-Encoder模型精排,筛出最相关的10条给大模型。这样既保证找得全,又控制了推理成本。
模块化设计
向量库、搜索引擎、大模型都是可替换的。不想用PostgreSQL可以换Milvus,想换个大模型改配置就行。这种设计让系统有很好的扩展性。
快速部署
git clone https://github.com/Tencent/WeKnora.git
cd WeKnora
cp .env.example .env
# 编辑.env配置大模型API密钥
docker-compose up -d
启动后访问本地8080端口就能看到界面,上传文档测试。
云栈社区 ( YunPan.Plus ) 本文首发需要注意的是,v0.1.3版本开始强制登录认证了,建议部署在内网,不要直接暴露到公网。支持私有化部署,数据不用担心泄露。
适用场景
企业知识库:把内部文档、Wiki、技术手册统一管理和检索
客服系统:从产品文档里自动查找答案回复用户
研发文档:快速定位API文档、设计方案中的具体内容
合规审查:在合同、法律文件中精确查找相关条款
工程化做得不错
从代码结构看,这个项目工程化做得比较扎实:
有完整的数据库迁移脚本,配置管理规范,Docker编排文件写得清楚。设计模式用得也比较合理,比如用策略模式切换不同检索算法,用适配器模式对接不同组件。
性能方面用了HNSW算法做向量索引,检索速度比暴力搜索快很多。还内置了检索可视化和评估指标,方便调试优化。
如果你在做RAG相关项目,这个代码库值得仔细看看,能学到不少东西。
关注《云栈后端架构》,分享后端技术与开源项目
配套资源
📌 Github:Tencent/WeKnora
📖 Go语言企业级开发教程 https://yunpan.plus/t/26
#WeKnora #Github #RAG #向量检索 #大模型 #企业架构 #腾讯开源
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
