)
介绍概念RAG 检索增强生成Retrieval-Augmented Generation打个比方 普通 AI像闭卷考试只会脑子里记的东西容易记错、过时。 RAG AI像开卷考试先去翻你给的课本 / 文档找到相关内容再整理成通顺答案。2025年初 deepseek很火的时候用ollamaanything LLM整了一个RAG通过控制台界面上传文档再向量化然后可以对话使用RAG了今天用代码来实现。大语言RAG工作原理用户上传文档对文档分块并通过Embedding模型将文档向量化存入向量数据库。用户查询知识库Embedding模型将用户提示词向量化并进行相似查询将查询结果和用户提示词一起发送给大模型大模型根据结果组织回答。介绍一下代码的实现开发环境java17 spring ai alibaba 向量数据库 milvus一、向量数据库 milvus我在青云科技上申请云主机(系统 contos8.3搭建milvus向量库便于拉取镜像1核2G就够了有外网访问权限并设置好网络访问控制。安装docker会安装的略过在线安装sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.iosystemctl start dockerdocker ps -a配置docker镜像加速器sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json -‘EOF’{ “registry-mirrors”: [“https://izf4l7qi.mirror.aliyuncs.com”] }EOFsudo systemctl daemon-reloadsudo systemctl restart docker安装 docker-compose(会安装的略过)docker-compose 在线安装curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-(uname−s)−(uname -s)-(uname−s)−(uname -m) -o /usr/local/bin/docker-composechmod x /usr/local/bin/docker-composedocker-compose -v安装milvus及客户端yum install -y wgetwget https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-linux-x86_64修改名字mv milvus-standalone-docker-compose.yml docker-compose.yml运行起来需要下载镜像需要一点时间docker-compose up -dmilvus连接客户端安装docker run --rm -p 3000:3000 -e MILVUS_URLhost.docker.internal:19530 zilliz/attu:v2.5访问终端(IP改为云主机外网IP):http://103.61.37.169:3000/ 打开后修改连接IP为云主机外网IP然后连接这样milvus既安装好了。二、spring ai alibaba大语言模型配置、分词器配置略需要请留言POM文件dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdcom.alibaba.cloud.ai/groupId artifactIdspring-ai-alibaba-starter-dashscope/artifactId /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-tika-document-reader/artifactId /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-vector-store-milvus/artifactId version1.0.3/version /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-advisors-vector-store/artifactId version1.0.3/version /dependency /dependenciesapplication.propertiesserver.port9001 server.servlet.encoding.enabledtrue server.servlet.encoding.forcetrue server.servlet.encoding.charsetUTF-8 spring.ai.dashscope.api-key替换为自己百炼平台apikey阿里百炼申请 spring.ai.dashscope.chat.options.modelqwen-plus spring.ai.dashscope.embedding.options.modeltext-embedding-v3 spring.application.namerag-huxipi spring.ai.vectorstore.milvus.client.host103.61.37.163 spring.ai.vectorstore.milvus.client.port19530 spring.ai.vectorstore.milvus.client.username spring.ai.vectorstore.milvus.client.password spring.ai.vectorstore.milvus.database-namedefault spring.ai.vectorstore.milvus.collection-namevector_store spring.ai.vectorstore.milvus.embedding-dimension1024 spring.ai.vectorstore.milvus.index-typeIVF_FLAT spring.ai.vectorstore.milvus.metric-typeCOSINE spring.ai.vectorstore.milvus.initialize-schematrue4. **关键代码controller**文档向量化GetMapping(value /rag/save) public String doSave(){ try { // 从 resource 目录读取 docx 文件 ClassPathResource classPathResource new ClassPathResource(2025年XXXX信息系统报告.docx); // 使用 TikaDocumentReader 读取文件内容支持 txt、pdf、docx、doc 等格式 TikaDocumentReader reader new TikaDocumentReader(classPathResource); ListDocument documents reader.read(); // 懒加载获取 Bean避免启动时就连接 Milvus TokenTextSplitter tokenTextSplitter getTokenTextSplitter(); VectorStore vectorStore getVectorStore(); // 1. 分块 - 将文档内容分成小块 ListDocument apply tokenTextSplitter.apply(documents); // 2. 向量化 - 将文本转换为向量嵌入并存储 vectorStore.add(apply); return 文档加载成功 classPathResource.getFilename() 共处理 documents.size() 个文档块; } catch (Exception e) { e.printStackTrace(); return 错误 e.getMessage(); } }文档查询GetMapping(value /rag/query) public FluxString doQuery(RequestParam(name msg,defaultValue 你是谁) String msg){ FluxString contentchatClient.prompt() .user(msg).advisors( QuestionAnswerAdvisor.builder(getVectorStore()) .searchRequest(SearchRequest.builder().query(msg).similarityThreshold(0.1d).build()) .build()) .stream() .content(); return content;三、结果演示文档加载文档查询这里给大家精心整理了一份全面的AI大模型学习资源包括AI大模型全套学习路线图从入门到实战、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等资料免费分享扫码免费领取全部内容1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容