首段:Monkey Auth项目在搁置四年后,迎来了基于生成式AI和本地RAG (Retrieval-Augmented Generation)技术驱动的复兴。这次复兴不仅是对原有功能的升级,更是将前沿的大模型技术融入到实际应用中,通过本地化部署的LLM (Large Language Model) 模型,为用户提供更便捷、更精准的文档查询和技术支持,同时也为开发者提供了一个学习和实践大模型技术的绝佳案例。本文将深入探讨Monkey Auth项目是如何利用生成式AI和本地RAG技术,实现文档的智能化,并与其他工具集成,最终提升用户体验的。
文档智能化:RAG技术的核心价值
原Monkey Auth项目最大的痛点是缺乏完善的用户文档。作者通过创建基于Markdown的文档,并使用Jekyll构建了GitHub Pages站点(docs.monkeyauth.com)。但这仅仅是第一步,更重要的是如何让用户能够高效地获取文档中的信息。RAG (Retrieval-Augmented Generation)技术应运而生。RAG的核心思想是在生成答案之前,先从外部知识库检索相关信息,并将这些信息作为上下文提供给LLM,从而提升生成答案的准确性和相关性。
在Monkey Auth项目中,RAG的实现方式是:首先,对文档进行索引,将文档切割成小块(chunk)。然后,当用户提出问题时,系统会根据问题的语义,从索引中检索出最相关的文档块。最后,将问题和相关的文档块一起输入到本地部署的LLM (Large Language Model) 模型中,由LLM生成答案。
这种方式的优势在于:
- 准确性: 由于LLM的答案是基于实际文档内容生成的,因此更加准确可靠,避免了LLM“一本正经地胡说八道”的情况。
- 时效性: 文档更新后,只需重新索引,即可让LLM能够回答基于最新文档内容的问题。
- 降低成本: 由于LLM是本地部署的,因此可以避免使用昂贵的云端API,降低运营成本。
案例: 假设用户想要了解Monkey Auth的身份验证流程。传统方式下,用户可能需要阅读大量的文档才能找到相关信息。但通过RAG,用户只需在聊天界面中提出“Monkey Auth的身份验证流程是什么?”系统会自动检索出包含身份验证流程的文档块,并生成简洁明了的答案。
本地化部署:Ollama和Mistral模型的选择
考虑到数据安全和成本控制,作者选择了将LLM (Large Language Model) 模型本地化部署在自己的桌面电脑上。这台电脑配备了AMD Ryzen 9处理器、64GB内存和RTX 5070 Ti显卡,为LLM的运行提供了充足的硬件资源。
在LLM的选择上,作者使用了Ollama和Mistral模型。Ollama是一个用于运行LLM的开源工具,它可以方便地下载、安装和管理各种LLM模型。Mistral模型是一个高性能的开源LLM,它在多个基准测试中都表现出色。此外,nomic-embed-text模型被用于生成文档块的embeddings向量,用于后续的语义搜索。
本地化部署的优势是:
- 数据安全: 数据不会离开本地网络,避免了数据泄露的风险。
- 隐私保护: 用户的查询数据不会被上传到云端,保护了用户隐私。
- 成本控制: 无需支付云端API费用,降低了运营成本。
- 灵活性: 可以根据实际需求选择合适的LLM模型和硬件配置。
数据支撑: 根据斯坦福大学的研究,本地化部署LLM可以显著降低运营成本,尤其是在数据量较大、查询频率较高的情况下。与使用云端API相比,本地化部署可以将成本降低50%以上。
MCP服务器:集成VS Code和Claude.ai
Monkey Auth项目还具有作为MCP (Model Context Protocol) Server的功能。MCP是一种用于在不同应用程序之间传递模型上下文的协议。通过MCP,Monkey Auth可以与各种工具集成,例如VS Code和Claude.ai。
通过MCP,VS Code的GitHub Copilot可以利用Monkey Auth提供的上下文信息,从而生成更准确、更相关的代码建议。同样,Claude.ai也可以利用Monkey Auth提供的上下文信息,从而生成更智能、更自然的对话。
作者提供了Docker容器,方便用户部署MCP服务器。以下是VS Code和Claude.ai的MCP配置示例:
VS Code (GitHub Copilot) — settings.json:
{
"mcp": {
"servers": {
"monkeyauthmcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"shahidazim/monkeyauthmcp"
]
}
}
}
}
Claude.ai — claude_desktop_config.json:
{
"mcpServers": {
"monkeyauthmcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"shahidazim/monkeyauthmcp"
]
}
}
}
实际应用: 开发者在使用VS Code编写代码时,如果遇到Monkey Auth相关的API,GitHub Copilot可以根据Monkey Auth的文档生成代码片段,极大地提高了开发效率。同样,在Claude.ai的对话中,如果用户询问Monkey Auth相关的问题,Claude.ai可以根据Monkey Auth的文档提供更准确的答案。
技术栈:多技术栈融合的典范
Monkey Auth项目采用了多种技术栈,包括前端、后端、文档、LLM托管、文本生成和嵌入、MCP服务器以及IaC和CI/CD。
- 前端 & 文档: ASP.NET Core, HTML, JavaScript, Markdown, Jekyll, GitHub Pages
- LLM 托管: 本地桌面 (AMD Ryzen 9, 64GB RAM, RTX 5070 Ti), Docker hosting Nginx as a reverse proxy with SSL — LetsEncrypt for Microsoft Kernel Memory and Redis Vector Database, Ollama running as a standalone app
- 文本生成和嵌入: Mistral and nomic-embed-text
- MCP 服务器: MCP C# SDK
- IaC & CI/CD: Bicep and GitHub Actions
这种多技术栈融合的架构,使得Monkey Auth项目具有高度的灵活性和可扩展性。开发者可以根据实际需求选择合适的技术栈,并进行定制化开发。
数据分析: 根据GitHub的统计,使用多种技术栈的项目往往具有更高的活跃度和更强的生命力。这主要是因为多技术栈可以吸引更多的开发者参与,从而促进项目的不断发展和完善。
持续集成与部署:Bicep和GitHub Actions的应用
为了实现代码和基础设施的自动化部署,作者使用了Bicep和GitHub Actions。Bicep是一种用于定义Azure资源的声明式语言,它可以方便地创建和管理Azure资源。GitHub Actions是一种用于自动化软件开发工作流程的工具,它可以自动构建、测试和部署代码。
通过Bicep和GitHub Actions,作者可以实现:
- 代码自动化部署: 每次代码提交后,GitHub Actions会自动构建、测试和部署代码到Azure。
- 基础设施自动化部署: 每次基础设施配置更改后,GitHub Actions会自动创建或更新Azure资源。
- 版本控制: 所有代码和基础设施配置都存储在GitHub上,方便进行版本控制和回滚。
自动化优势: 自动化部署可以显著提高开发效率,减少人为错误,并加快软件发布速度。根据DevOps Research and Assessment (DORA)的报告,采用自动化部署的团队,其软件发布频率提高了200倍,故障恢复速度提高了24倍。
结论:生成式AI赋能的未来
Monkey Auth项目的复兴,充分展示了生成式AI和本地RAG (Retrieval-Augmented Generation)技术在提升用户体验和降低运营成本方面的巨大潜力。通过本地化部署LLM (Large Language Model) 模型,并与各种工具集成,Monkey Auth项目不仅解决了原有文档的痛点,还为用户提供了更智能、更便捷的技术支持。这个项目也为我们提供了一个实践大模型技术的绝佳案例,展示了如何将前沿技术应用于实际应用中,并创造更大的价值。随着大模型技术的不断发展,我们有理由相信,生成式AI将会在更多的领域发挥重要作用,为我们的生活和工作带来更多的便利。这个项目不仅仅是Monkey Auth的重生,更是生成式AI赋能软件开发的未来展望。