20260318_203310_AI大模型之RAG(向量库milvus实现)
介绍概念RAG 检索增强生成Retrieval-Augmented Generation打个比方 普通 AI像闭卷考试只会脑子里记的东西容易记错、过时。 RAG AI像开卷考试先去翻你给的课本 / 文档找到相关内容再整理成通顺答案。2025年初 deepseek很火的时候用ollamaanything LLM整了一个RAG通过控制台界面上传文档再向量化然后可以对话使用RAG了今天用代码来实现。大语言RAG工作原理1.用户上传文档对文档分块并通过Embedding模型将文档向量化存入向量数据库。2.用户查询知识库Embedding模型将用户提示词向量化并进行相似查询将查询结果和用户提示词一起发送给大模型大模型根据结果组织回答。介绍一下代码的实现开发环境java17 spring ai alibaba 向量数据库 milvus一、向量数据库 milvus我在青云科技上申请云主机(系统 contos8.3搭建milvus向量库便于拉取镜像1核2G就够了有外网访问权限并设置好网络访问控制。1.安装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 docker2.安装 docker-compose(会安装的略过)docker-compose 在线安装curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-( u n a m e − s ) − (uname -s)-(uname−s)−(uname -m) -o /usr/local/bin/docker-composechmod x /usr/local/bin/docker-composedocker-compose -v3.安装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 -d4.milvus连接客户端安装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大语言模型配置、分词器配置略需要请留言2.POM文件dependencies dependency groupId org.springframework.boot /groupId artifactId spring-boot-starter-web /artifactId /dependency dependency groupId com.alibaba.cloud.ai /groupId artifactId spring-ai-alibaba-starter-dashscope /artifactId /dependency dependency groupId org.springframework.ai /groupId artifactId spring-ai-tika-document-reader /artifactId /dependency dependency groupId org.springframework.ai /groupId artifactId spring-ai-starter-vector-store-milvus /artifactId version 1.0.3 /version /dependency dependency groupId org.springframework.ai /groupId artifactId spring-ai-advisors-vector-store /artifactId version 1.0.3 /version /dependency /dependencies3.application.propertiesserver.port 9001 server.servlet.encoding.enabled true server.servlet.encoding.force true server.servlet.encoding.charset UTF-8 spring.ai.dashscope.api-key 替换为自己百炼平台apikey阿里百炼申请 spring.ai.dashscope.chat.options.model qwen-plus spring.ai.dashscope.embedding.options.model text-embedding-v3 spring.application.name rag-huxipi spring.ai.vectorstore.milvus.client.host 103.61.37.163 spring.ai.vectorstore.milvus.client.port 19530 spring.ai.vectorstore.milvus.client.username spring.ai.vectorstore.milvus.client.password spring.ai.vectorstore.milvus.database-name default spring.ai.vectorstore.milvus.collection-name vector_store spring.ai.vectorstore.milvus.embedding-dimension 1024 spring.ai.vectorstore.milvus.index-type IVF_FLAT spring.ai.vectorstore.milvus.metric-type COSINE spring.ai.vectorstore.milvus.initialize-schema true4.关键代码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 content chatClient .prompt() .user(msg).advisors( QuestionAnswerAdvisor. builder (getVectorStore()) .searchRequest(SearchRequest. builder ().query(msg).similarityThreshold( 0.1d ).build()) .build()) .stream() .content(); return content;三、结果演示文档加载文档查询学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2425826.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!