rag-semantic-kernel-mongodb-vcore
john0isaac/rag-semantic-kernel-mongodb-vcore加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景:你是某制造业企业的技术文档管理员,公司积累了近十年的产品规格书、技术手册和维修记录。当同事问"这个型号的主板保修期是多久"时,你需要翻阅几十份 PDF 才能找到答案。更让人头疼的是,如果问的是组合问题——"这个型号的主板在高温环境下稳定性如何"——普通搜索引擎往往无能为力。
大语言模型(LLM)擅长理解和生成自然语言,但它的知识有截止日期,且无法直接访问你公司的私有数据。检索增强生成(RAG) 正是解决这一问题的核心技术:让 LLM 在回答问题时,先从私有知识库中检索相关文档,再结合检索结果生成答案。
今天要介绍的项目——john0isaac/rag-semantic-kernel-mongodb-vcore,就是一个基于 RAG 架构的企业级知识库问答系统示例,它组合了微软 Semantic Kernel 框架、Azure OpenAI 强大语言模型和 Azure Cosmos DB MongoDB vCore 原生向量搜索能力。
Semantic Kernel 是微软开源的 AI 应用开发框架,其核心作用是将传统业务代码与 AI 服务(LLM)连接起来。它提供了一种"插件化"的架构:你既可以让 LLM 直接回答问题,也可以给它挂载各种"技能"(Plugins/Skills)——比如连接向量数据库、执行外部 API、调用业务逻辑。Semantic Kernel 的设计理念是让 AI 能力可以像搭积木一样组合,而不是把所有逻辑都塞进 prompt 里。
相比 LangChain,Semantic Kernel 的优势在于与微软生态(Azure OpenAI、Azure Cognitive Services)深度集成,配置更简洁,代码更易维护。对于已经使用 Azure 服务的团队来说,Semantic Kernel 是更自然的选择。
Cosmos DB 是 Azure 的多模数据库服务,其 MongoDB vCore 版本在 2024 年引入了内置向量索引支持。这意味着你不需要额外的向量数据库(如 Pinecone/Milvus),直接在 MongoDB 中存储文档的向量 embedding,并执行相似度搜索。vCore 采用按容量计费模式,相比传统 RU(请求单元)计费更适合有稳定规模的企业场景。
Azure OpenAI 提供 GPT-4、GPT-4o 等业界领先大模型的托管服务,相比公共 ChatGPT API,它提供企业级 SLA、数据隐私保护(你的数据不会用于模型训练)和更灵活的部署选项(可以部署在特定区域)。
整个 RAG 系统的数据流转如下:
add_data.py 脚本将文本数据上传到系统text-embedding-ada-002 模型,将文本转为 1536 维向量
项目使用 Quart(异步版 Flask)作为 Web 框架,部署在 Azure App Service 上。通过 Hypercorn ASGI 服务器运行。Web 层提供两个核心端点:/hello(健康检查)和 /chat(主对话接口)。系统支持两种查询模式——纯向量搜索(vector)和完整的 RAG 增强生成(rag)。
通过 Semantic Kernel 的 AzureCosmosDBMemoryStore 将 Cosmos DB vCore 作为持久化记忆存储,实现了向量检索和 LLM 生成的无缝衔接。系统使用 HNSW 算法构建向量索引,参数 m=16、ef_construction=64、ef_search=40,在检索精度和性能之间取得平衡。Embedding 维度固定为 1536(适配 text-embedding-ada-002 模型)。
项目通过 Bicep IaC 模板完整定义了 Azure 资源拓扑,包括 Azure App Service、Azure Cosmos DB MongoDB vCore、Azure OpenAI、Azure Key Vault 和 App Service Plan。部署流程高度自动化:安装 azd CLI → 登录 → 初始化 → 配置环境变量 → azd up 一键部署所有资源。
关键依赖项:semantic-kernel、pymongo、quart、hypercorn、azure-identity、openai、azure-cosmos。
微软将 Semantic Kernel 定位为"企业 AI 应用开发的标准框架",该项目是其 RAG 参考实现的优秀案例。随着 Azure Cosmos DB vCore 原生向量搜索的成熟,"数据库即向量库"正在成为云原生 AI 应用的新范式——开发者不再需要在 Postgres + pgvector、Pinecone、Milvus 等多个服务之间做权衡,而是可以在熟悉的 MongoDB 生态中统一处理事务存储和向量检索。GitHub Stars 的稳步增长和 Microsoft Tech Community 官方博客的背书,也印证了这类技术组合在企业 AI 落地方案中的广泛认可。