AI开发者的“救星“!彻底解决Milvus容器重启、端口拒绝问题,RAG检索一次成功

本文记录一次从 Milvus 容器反复重启、端口拒绝,到最终稳定运行并实现 LangChain RAG 成功检索的完整实战过程。适用于本地 RAG、私有大模型、知识库系统等场景。

一、背景与问题

在本地构建 RAG(Retrieval-Augmented Generation)时,开发者常遇到以下典型问题:

  • telnet 19530 连接被拒绝
  • Milvus 容器反复 Restarting (1)
  • pymilvus 能连上,但 LangChain 查不到数据
  • 不清楚 Milvus 中的「tag / metadata」到底存在哪里

本文基于 Milvus 2.4 + LangChain + Ollama(Qwen + bge-m3),逐步解决上述问题。

二、整体架构

LangChain │ ├─ Ollama Embedding (bge-m3) │ ├─ Milvus Vector Store │ ├─ etcd │ ├─ minio │ └─ standalone │ └─ Ollama LLM (qwen2.5)

Python 3.9 / 3.10 / 3.11 均可支持。

pip install -U \ langchain \ langchain-core \ langchain-community \ langchain-text-splitters \ langchain-ollama \ pymilvus \ faiss-cpu

三、Milvus Docker Compose(稳定版)

注意:Milvus standalone 必须依赖 etcd + minio,不能直接使用docker run milvusdb/milvus,否则 19530 端口不会监听。

docker-compose.yml

version: '3.5'services: rag-etcd: container_name: rag-milvus-etcd image: quay.io/coreos/etcd:v3.5.5 volumes: - ./rag-volumes/etcd:/etcd command: > etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd rag-minio: container_name: rag-milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin ports: - "19000:9000" - "19001:9001" volumes: - ./rag-volumes/minio:/minio_data command: minio server /minio_data --console-address ":9001" rag-milvus: container_name: rag-milvus-standalone image: milvusdb/milvus:v2.4.0 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: rag-etcd:2379 MINIO_ADDRESS: rag-minio:9000 volumes: - ./rag-volumes/milvus:/var/lib/milvus ports: - "19530:19530" - "9091:9091" depends_on: - rag-etcd - rag-minionetworks: default: name: rag-milvus-net

启动命令:

docker compose up -d

四、验证 Milvus 是否正常

telnet 验证端口

telnet 127.0.0.1 19530

若看到如下输出:

Connected to 127.0.0.1.HTTP/1.1 400 Bad Request

这是正常现象,因为 19530 是 gRPC 端口,并非 HTTP 接口。

Python 连接 Milvus

from pymilvus import connections, utility, Collectionconnections.connect( host="127.0.0.1", port="19530")print("connected:", connections.has_connection("default"))print("collections:", utility.list_collections())

五、理解 Milvus 里的 “tag / metadata”

Milvus 没有内置 tag 概念。所谓的 tag,本质是 Collection schema 中的 scalar 字段。

查看 collection schema:

col = Collection("rag_qwen_prod")print(col.schema)

典型结构如下:

id (INT64, primary)vector (FLOAT_VECTOR)text (VARCHAR)source (VARCHAR)category (VARCHAR)

其中source/category即为 RAG 中的 tag。

六、LangChain + Ollama + Milvus 实战

Embedding(bge-m3)

from langchain_ollama import OllamaEmbeddingsembeddings = OllamaEmbeddings( model="bge-m3", base_url="http://192.168.31.161:11434")

构造文档

from langchain_core.documents import Documentdocs = [ Document(page_content="RAG 是检索增强生成"), Document(page_content="Milvus 是生产级向量数据库"), Document(page_content="Qwen2.5 是高质量中文大模型"),]

文本切分

from langchain_text_splitters import RecursiveCharacterTextSplittersplitter = RecursiveCharacterTextSplitter( chunk_size=300, chunk_overlap=50)docs = splitter.split_documents(docs)

写入 Milvus

from langchain_community.vectorstores import Milvusvectorstore = Milvus.from_documents( docs, embedding=embeddings, collection_name="rag_qwen_prod", connection_args={ "host": "localhost", "port": "19530" })

Retriever

retriever = vectorstore.as_retriever( search_kwargs={"k": 3})

LLM(Qwen2.5)

from langchain_ollama import ChatOllamallm = ChatOllama( model="qwen2.5:7b", temperature=0)

Prompt & LCEL RAG Chain

from langchain_core.prompts import ChatPromptTemplatefrom langchain_core.runnables import RunnablePassthroughprompt = ChatPromptTemplate.from_messages([ ("system", "你只能基于上下文回答问题,不允许编造"), ("human", "上下文:\n{context}\n\n问题:{question}")])rag_chain = ( { "context": retriever, "question": RunnablePassthrough() } | prompt | llm)

查询验证

result = rag_chain.invoke("什么是 Milvus?")print(result.content)

输出示例:

Milvus 是一个生产级向量数据库,用于高效存储和检索向量数据。

RAG 生效。

七、完整代码与常见问题总结

from langchain_ollama import ChatOllama, OllamaEmbeddingsfrom langchain_community.vectorstores import Milvusfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_core.documents import Documentfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.runnables import RunnablePassthrough# 1. Embeddingembeddings = OllamaEmbeddings( model="bge-m3", base_url="http://192.168.31.161:11434")# 2. 文档docs = [ Document(page_content="RAG 是检索增强生成"), Document(page_content="Milvus 是生产级向量数据库"), Document(page_content="Qwen2.5 是高质量中文大模型"),]# 3. 切分splitter = RecursiveCharacterTextSplitter( chunk_size=300, chunk_overlap=50)docs = splitter.split_documents(docs)# 4. Milvus Vector Storevectorstore = Milvus.from_documents( docs, embedding=embeddings, collection_name="rag_qwen_prod", connection_args={ "host": "localhost", "port": "19530" })retriever = vectorstore.as_retriever(search_kwargs={"k": 3})# 5. LLMllm = ChatOllama( model="qwen2.5:7b", temperature=0)# 6. Promptprompt = ChatPromptTemplate.from_messages([ ("system", "你只能基于上下文回答问题,不允许编造"), ("human", "上下文:\n{context}\n\n问题:{question}")])# 7. LCEL RAG Chainrag_chain = ( { "context": retriever, "question": RunnablePassthrough() } | prompt | llm)# 8. Queryresult = rag_chain.invoke("什么是 Milvus?")print(result.content)
问题原因
19530 连接被拒绝直接 docker run Milvus
容器重启缺少 etcd / minio
telnet 返回 400正常(gRPC)
查不到 tagschema 没定义 metadata
LangChain 无结果embedding 不一致

八、下一步可以做什么?

  • 多 tag / 多租户 RAG
  • expr 过滤(category == 'ops'
  • Milvus IVF / HNSW 调优
  • Streaming RAG
  • Web UI + API 服务化

九、结语

Milvus + LangChain + Ollama 是目前本地 RAG 的黄金组合:

  • Milvus:性能与扩展性
  • Ollama:本地模型自由
  • LangChain:链路清晰、可组合

学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.mzph.cn/news/1189931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年度封阳台系统门窗生产厂家权威推荐榜单:断桥铝门窗封阳台 /封阳台/封阳台隔音窗/ 封阳台侧压窗 /铝合金门窗封阳台源头制造商精选

随着现代建筑对节能环保、安全性能与居住品质要求的全面提升,封阳台系统门窗市场正经历从传统功能型向高性能、高美观度、智能化解决方案的快速转型。行业数据显示,2024年国内封阳台市场规模已突破860亿元,其中高端…

Kafdrop完全教程:从零掌握Kafka可视化管理的终极方案

Kafdrop完全教程:从零掌握Kafka可视化管理的终极方案 【免费下载链接】kafdrop Kafka Web UI 项目地址: https://gitcode.com/gh_mirrors/ka/kafdrop 还在为Kafka集群的"黑盒"状态而苦恼?面对复杂的命令行工具感到无从下手?…

腾讯混元突破:全能AI助手实现积木式3D创作编辑

这项由浙江大学、腾讯混元、清华大学和香港大学联合团队开发的突破性研究于2025年11月发表于arXiv预印本平台(论文编号:arXiv:2511.13647v1),有兴趣深入了解的读者可以通过该编号查询完整论文。研究团队由来自四所知名院校的研究人…

揭秘RAG技术:让大模型“开卷考试“不再是梦,AI编程新纪元来临!

一本永远翻不完的参考书,一个随时可咨询的专家大脑,这就是RAG技术为人工智能带来的颠覆性变革。 深夜,科技公司会议室里灯火通明。产品经理焦急地等待着AI系统对最新行业报告的解读,而聊天机器人却给出了一个似是而非的答案——它…

OWASP Top 10 实战精讲:Web 渗透核心漏洞的原理与防御方法

很多 Web 安全从业者和新手,对 OWASP Top 10 的认知停留在 “知道漏洞名”,却不懂 “漏洞为什么会出现”“怎么手动复现”“企业该怎么防”—— 比如只会用 Sqlmap 扫 SQL 注入,却看不懂有漏洞的 PHP 代码;知道 XSS 危险&#xff…

救命神器10个AI论文工具,研究生高效写作必备!

救命神器10个AI论文工具,研究生高效写作必备! AI 工具如何重塑论文写作的效率与质量 在研究生阶段,论文写作不仅是学术能力的体现,更是时间与精力的巨大考验。随着 AIGC 技术的不断发展,越来越多的 AI 工具开始进入学术…

黑客常用命令速查手册,零基础入门黑客技术收藏这一篇就够了

系统信息 arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda #罗列一个磁盘的架构特性 hdparm -tT /dev/sda #在磁盘…

3分钟搞定网易云音乐NCM格式解密:超简单操作指南

3分钟搞定网易云音乐NCM格式解密:超简单操作指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他设备播放而烦恼吗?别担心,今天我要为你介绍一款超级…

如何快速部署macOS虚拟机:OneClick-macOS-Simple-KVM完整指南

如何快速部署macOS虚拟机:OneClick-macOS-Simple-KVM完整指南 【免费下载链接】OneClick-macOS-Simple-KVM Tools to set up a easy, quick macOS VM in QEMU, accelerated by KVM. Works on Linux AND Windows. 项目地址: https://gitcode.com/gh_mirrors/on/One…

哈工大打造“读心术“手机助手:能从你的使用习惯中预测下一步操作

这项由哈尔滨工业大学深圳校区团队领导的研究发表于2025年1月,论文编号为arXiv:2601.09636v1,有兴趣深入了解的读者可以通过该编号查询完整论文。研究团队开发了一种全新的手机助手系统,它就像一位贴心的管家,能够通过观察你长期以…

【保姆级教程】腾讯开源WeKnora框架:从零开始搭建企业级RAG系统,AI开发不再难!

📖 项目概述 WeKnora(维娜拉)是腾讯开源的一款基于大语言模型的文档理解与语义检索框架,专为处理结构复杂、内容异构的文档场景而设计README_CN.md:45-47。该项目采用模块化架构,融合多模态预处理、语义向量索引、智能…

从实战的角度分析渗透测试究竟需要学习哪些知识点,黑客技术零基础入门到精通教程建议收藏!

前言 最近有很多人询问,自己明明OWASP Top 10 都学的差不多了,各种靶场也复现的差不多了,Burpsuite、goby、awvs、dirsearch等等工具也是用的丝滑,但为什么就是感觉挖不到洞呢 基础知识已经准备的差不多了,现在可能缺乏…

网络安全 CTF 全领域指南:从 Crypto 到 Web,小白入门宝典(建议收藏)

文章详细介绍了CTF竞赛的五大方向:Crypto密码学、Pwn二进制漏洞挖掘、Web安全、MISC杂项和逆向工程。每个方向阐述了其特点、优势、所需知识储备与工具准备,强调兴趣和坚持是学习关键。文章鼓励初学者不畏困难,通过实践逐步提升技能&#xff…

抖音视频保存终极指南:3步搞定高清无水印下载完整教程

抖音视频保存终极指南:3步搞定高清无水印下载完整教程 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经遇到过这样的情况:在抖音上看到一段精彩的视频,想要保存下…

抖音内容永久保存神器:douyin-downloader让你轻松收藏高清无水印视频

抖音内容永久保存神器:douyin-downloader让你轻松收藏高清无水印视频 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾在抖音上看到精彩视频却苦于无法保存?是否担心心爱的直播…

斯坦福大学新发现:AI如何像人类一样学会“举一反三“

当我们学会骑自行车后,即使换到一辆完全不同的自行车上,我们也能很快适应并骑得很好。这种"举一反三"的能力对人类来说似乎理所当然,但对人工智能来说却是一个巨大的挑战。最近,斯坦福大学的研究团队在这个领域取得了重…

3 个案例吃透 SQL 注入 / XSS:原来黑客是这样 “骗” 网站的

很多新手一听到 “SQL 注入”“XSS” 就觉得 “高深难懂”,其实这些漏洞的本质,就是 “黑客用特殊话术骗网站犯错”—— 就像骗子用花言巧语骗路人掏钱,黑客用特殊字符骗网站泄露数据、执行恶意操作。 这篇文章用 3 个贴近生活的案例&#x…

布宜诺斯艾利斯大学突破:熵解码预测AI模型答题准确率

这项由布宜诺斯艾利斯大学数学系和圣安德烈斯大学ELIAS实验室联合开展的研究,发表于2026年1月的arXiv预印本平台,论文编号为arXiv:2601.09001v1。研究团队开发了一种创新方法,能够像使用体温计一样,通过监测AI大模型在生成答案时的…

分子对接技术应用指南:从零基础到高效实战

分子对接技术应用指南:从零基础到高效实战 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina 你是否曾好奇,科学家是如何预测药物分子与蛋白质的相互作用?分子对接技术正是解…

3步解决DBeaver驱动下载失败问题:完整指南与实战方案

3步解决DBeaver驱动下载失败问题:完整指南与实战方案 【免费下载链接】dbeaver DBeaver 是一个通用的数据库管理工具,支持跨平台使用。* 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等;提供 SQL 编辑、查询、调试等功能&a…