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