大家好,我是小米,一个 31 岁还在写代码的技术分享狂热爱好者!
说来惭愧,我在大模型的风口刮到我脸上的时候还在鼓捣传统 Java 开发,直到今年初,公司要搞一个“AI 助理”小项目,领导一句“用 Java 写个能问文档的助手”,把我瞬间打回现实。
Java 能搞 RAG 吗?能!而且现在更简单了,因为——LangChain4j 推出了 Easy RAG 功能!
今天,我就给大家讲讲我从懵逼小白,到用 Easy RAG 快速搭建起一个能读 PDF 问问题的系统的全过程,真的超级简单,适合所有想快速上手 RAG 的 Java 同学!
RAG 是什么?为什么我突然开始搞它?
先给没接触过的朋友简单科普一下:
RAG(Retrieval-Augmented Generation,检索增强生成) 是一种将外部知识库与大语言模型结合的方式,让模型在生成答案时,能够参考你自己的数据,比如 PDF 文档、数据库、网页等等。
它有两个关键步骤:
- 检索(Retrieval): 给用户输入找相关文档片段;
- 生成(Generation): 把这些片段喂给大模型,让它写出更准确的回答。
想象一下,你丢给 ChatGPT 一本 200 页的公司员工手册,然后问它:“试用期考核不合格怎么办?”
如果没有 RAG,它只能瞎猜;但如果你接入了这本手册做知识库,结果就是:
“根据公司员工手册第 3 章第 4 节规定,试用期员工考核不合格,公司有权提前 3 天通知解除劳动合同。”
是不是香爆了?这就是 RAG 的魅力!
为什么我选 LangChain4j,而不是 LangChain(Python 版)?
大家都知道 LangChain 在 Python 圈非常火,它把 RAG 做成了一套很强的链式调用框架,但我 Java 选手总不能天天写 Python 吧
后来我在 GitHub 上发现了 LangChain4