RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答

RAGRetrieval Augmented Generation 检索增强生成)是目前业界中的一种主流方法,通过增加额外知识的方式来减少大语言模型(LLM)的幻觉问题(一本正经的胡说八道)。

RAG 系统概览

如上图所示,RAG 系统可以分为两个部分:

  • Indexing:构建知识库。
  • Retrieval & Generation:从知识库中获取相关信息,然后生成结果。

Indexing 构建知识库的过程可以分为四步:

  1. \1. Load:加载 PDF、doc、markdown、web 等等形式的知识数据。
  2. \2. Split:由于 LLM 上下文大小的限制,需要将文档进行切割。
  3. \3. Embedding:将文本转换为向量。
  4. \4. store to VectorDB:将文本内容和向量存储至向量数据库,即知识库。

Retrieval & Generation 的过程也是四步:

  1. \1. Embedding:将用户提出的问题转换为向量。
  2. \2. search VectorDB:从知识库中查询与问题语义相近的文本段落。
  3. \3. prompt:将检索出来的文本段落与用户问题合并,生成 prompt。
  4. \4. LLM:将 prompt 提交给大语言模型,得到最终答案。

从上述过程中可以看到,相较于直接把问题提交给 LLM 得到答案,RAG 系统额外构建了一个知识库,并且会把问题跟已有知识相结合,生成新的 prompt 后再提交给 LLM 得到答案。 换句话说,RAG 系统就是在用户提出的问题之外,额外增加了一些上下文/背景信息,这些信息可以是实时信息、也可以是专业领域信息,以此从 LLM 得到更好的回答。

RAG 系统示例

在本示例中,我将使用 langchainRedisllama.cpp 构建一个 kubernetes 知识库问答。

langchain 是一个工具包,Redis 被我用作向量数据库,llama.cpp 是一个开源的加载大语言模型的运行时程序。

我在本地使用了 Docker 容器环境进行开发,通过以下 docker-compose 文件拉取依赖的服务:

代码示例如下:

代码释义:

  • • 加载文档:使用 langchain 抓取 kubernetes 官方文档页面内容。

  • • 切割文档:使用 langchain 切割文档。

  • • 向量化:使用 sentence_transformers 将文本转换为向量:

    from sentence_transformers import SentenceTransformer
    sentences = ["This is an example sentence"]

    model = SentenceTransformer('sentence-transformers/all-mpnet-base-v2')
    embeddings = model.encode(sentences)
    print(embeddings)

  • • 存储至向量数据库:将文本和向量存储至 Redis,你也可以使用其它向量数据库。

  • • 用户提问向量化:使用同样的模型将用户提出的问题转换为向量。

  • • 向量相似性检索:从向量数据库中检索出与提问相似的文本段落。

  • • 组合生成 prompt:将检索出来的信息与用户提问一起合并生成新的 prompt

  • • 将 prompt 提交给 LLM 得到答案。

最终的测试结果如下:

可以看到,加了上下文之后,LLM 给出的答案更好了。

RAG 面临的挑战

RAG 的每一步几乎都面临挑战:

  • • 如何加载不同形式的文档数据?这一步问题倒不大。
  • • 如何切割文档?切割的效果影响了 prompt 的上下文信息,因此也会影响 LLM 生成的结果。
  • • 如何做 embedding,选择哪种模型?
  • • 选择哪个向量数据库?常见的技术选型问题。
  • • 如何将检索出来的信息与用户提问一起合并成新的 promptprompt 本来就可以五花八门。
  • • 选择哪个 LLM 以及运行时?就模型而言,Llama 系列算是最火的开源模型了;而运行时则有 llama.cpp(或者在其之上封装的 Ollama)、HuggingFace/transformersvLLM 等等。

总结

RAG 系统通过引入知识库,扩展了 LLM 对专业领域和实时信息的支持能力,使其在回答专业问题时更加准确高效。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

相关推荐
QiLinkOS5 分钟前
徐玉生《中国技术大败局》完整体系深度评析(1)
人工智能·dna双螺旋归因模型·中国工业的数字验尸官·技术专利研发情报洞察·qilinkos报告·技术专利情报洞察·数字黑匣子
kft13146 分钟前
Playwright + 本地 AI,从录制到自愈闭环的一站式自动化测试平台。
人工智能·测试工具
行走的小派7 分钟前
香橙派三款昇腾产品实操案例合集:DeepSeek部署、YOLOv8检测、智能助手平台
人工智能
牛哥带你学代码11 分钟前
VLA 与机器人基础模型:具身智能的下一代操作系统
人工智能·机器人
Cutecat_12 分钟前
YouTube 多语种自动配音功能实测:AI 如何让一条视频“开口说”多种语言
人工智能·科技·音视频
Maynor99614 分钟前
AI Coding 零基础实战教程|第五部分:完整项目案例实操
java·前端·人工智能·claude code·ai coding
三品吉他手会点灯25 分钟前
嵌入式机器学习 - 学习笔记1.0.2 - 学习路线导览:从机器学习基础到 TinyML应用
人工智能·笔记·嵌入式硬件·学习·机器学习
ahauedu37 分钟前
多租户 RAG 知识库系统基于Spring Boot 4.0.5+Spring AI 2.0.0 + Milvus
spring·rag·springai2.0
lunzi_082639 分钟前
【AI 杂谈】AI 的边界正在被谁定义?
人工智能
静Yu1 小时前
给 AI 装上「身体」:我用魔珐星云做数字人的实践与接入教程
人工智能