通过Milvus和Langchain快速构建基于百炼大模型的LLM问答系统

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。

本文主要演示了如何使用 Milvus 和 LangChain 快速构建一个基于阿里云百炼大模型的 LLM 问答系统。

前期准备

  • 服务开通

本文采用的Embedding模型为阿里云百炼平台的 通用文本向量-v2,采用的LLM为 通义千问-Max-Latest。本文相关的API-KEY可在百炼平台进行创建。更多Embedding和LLM模型的支持可以参照LangChain官方网站



  • 依赖库安装
pip install pymilvus langchain dashscope


RAG问答系统

  • 方案架构

整体方案架构如下图所示,主要包含以下几个处理过程:

  • 知识库预处理:用户通过LangChain sdk可以切分文本,作为向量Embedding模型的输入
  • 知识库存储:Embedding模型(样例采用通用文本向量-v2)将输入文本向量化存储至阿里云Milvus向量数据库
  • 向量相似性检索:Embedding模型将用户输入问题向量化之后,利用阿里云Milvus提供的索引检索出相关联的Retrieved文档集合
  • RAG对话验证:用户通过LangChain sdk,以向量相似性检索结果作为上下文,将问题Prompt至LLM模型中(样例采用通义千问-Max-Latest),获取最终答案。可以通过直接提问至LLM模型获取的答案进行对比验证


  • 相关示例代码

本样例以Milvus官方文档作为输入,验证RAG对话增强效果。


  1. 使用Langchain对输入文件进行预处理,切分文本作为向量输入
import os
from langchain.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores.milvus import Milvus
from langchain.schema.runnable import RunnablePassthrough
from langchain.prompts import PromptTemplate
from langchain_community.embeddings import DashScopeEmbeddings
from langchain.chains import LLMChain
# 设置Miluvs Collection名称
COLLECTION_NAME = 'release_note_qa'
# 设置向量维度
DIMENSION = 1536
DASHSCOPE_API_KEY = "sk-xxxxxxxxxxxxxx"
os.environ["DASHSCOPE_API_KEY"] = DASHSCOPE_API_KEY
loader = WebBaseLoader([
    "https://github.com/milvus-io/web-content/blob/master/localization/v2.5.x/site/zh/release_notes.md"
])
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=256)
# 使用LangChain将输入文档安照chunk_size切分
docs = text_splitter.split_documents(documents)


2.    使用向量模型Embedding切分后的文档,并存储到Milvus数据库

# 设置embedding模型为DashScope(可以替换成自己模型)
embeddings = DashScopeEmbeddings(model="text-embedding-v2")
# 创建connection,host为阿里云Milvus的访问域名
connection_args={"host": "c-xxxxxxxxxxxx.milvus.aliyuncs.com", "port": "19530", "user": "root", "password": "xxxxxxx"}
# 创建Collection
vector_store = Milvus(
    embedding_function=embeddings,
    connection_args=connection_args,
    collection_name=COLLECTION_NAME,
    drop_old=True,
).from_documents(
    docs,
    embedding=embeddings,
    collection_name=COLLECTION_NAME,
    connection_args=connection_args,
)


3.    针对输入问题在向量库进行相似性检索,把结果作为Retrieved文档集合

# 利用Milvus向量数据库进行相似性检索
question = "Milvus修复过哪些空指针异常的bug?"
# 默认为4条输出结果
result = vector_store.similarity_search(question, 4)
for hits in result:
    for hit in hits:
        print(hit)
        print("\n")


4.    使用Langchain在线调用通义大模型服务,将问题和Retrieved文档作为输入,获取最终答案,与直接提问进行对比

from langchain_community.llms import Tongyi
from langchain_core.prompts import PromptTemplate
llm = Tongyi(model_name="qwen-max-latest")
# 将上述相似性检索的结果作为retriever,提出问题输入到LLM之后,获取检索增强之后的回答
retriever = vector_store.as_retriever()
question = "Milvus修复过哪些空指针异常的bug?"
rag_template = """
请以如下context中的内容作为参考给出答案, 如果你不知道答案,就说不知道,不要胡编乱造答案。 
{context}
Question: {question}
Helpful Answer:"""
rag_prompt = PromptTemplate.from_template(rag_template)
rag_chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | rag_prompt
    | llm
)
print(rag_chain.invoke(question))
# answer
# 根据提供的信息,Milvus 修复了以下与空指针异常相关的 bug:
# 1. **修正了 null 表达式对 JSON 字段不起作用的问题(#40457)**  
#    这个问题可能涉及在处理 JSON 字段时,未正确处理 null 值导致的异常。
# 2. **修正了 null 偏移的并发问题(#40363、#40365)**  
#    该问题可能与在多线程环境下处理 null 偏移时引发的竞争条件或空指针异常有关。
# 如果需要更详细的信息,建议参考具体的 issue 或代码更改记录。
question = "Milvus修复过哪些空指针异常的bug?"
template = """
如果你不知道答案,就说不知道,不要胡编乱造答案 
Question: {question}
Helpful Answer:
"""
prompt = PromptTemplate.from_template(template)
chain = prompt | llm
print(chain.invoke({"question": question}))
# answer
# 不知道。  
# Milvus 是一个开源的向量数据库项目,其开发和维护过程中确实会修复各种 bug,包括可能存在的空指针异常(Null Pointer Exception)。然而,具体的 bug 修复记录需要查阅 Milvus 的官方代码仓库(如 GitHub 上的提交历史、Issue 列表或 Release Notes)才能获得详细信息。如果没有直接查询这些资源,我无法提供确切的答案,因此在这里明确表示“不知道”。  
# 如果你有兴趣了解,可以访问 [Milvus GitHub 仓库](https://github.com/milvus-io/milvus) 并搜索相关的 Issue 或 Pull Request,或者查看其官方文档和更新日志。


立即体验

如果您想体验阿里云Milvus的相关能力,欢迎在阿里云官网搜索向量检索服务Milvus版进行体验。

产品新用户也可免费领取1个月试用资格

此外,阿里云为了回馈新老用户,推出了重大优惠

阿里云向量检索服务 Milvus 版  限时年付5折! 新购续费均可|每个uid仅限参与1次(非同人)购买地址


相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
打赏
0
4
4
1
131
分享
相关文章
构建可落地的企业AI Agent,背后隐藏着怎样的技术密码?
三桥君深入解析企业AI Agent技术架构,涵盖语音识别、意图理解、知识库协同、语音合成等核心模块,探讨如何实现业务闭环与高效人机交互,助力企业智能化升级。
68 6
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎
在智能驾驶技术快速发展中,数据成为驱动算法进步的核心。某新能源汽车领军企业基于阿里云Milvus向量数据库构建智能驾驶数据挖掘平台,利用其高性能、可扩展的相似性检索服务,解决了大规模向量数据检索瓶颈问题,显著降低20%以上成本,缩短模型迭代周期,实现从数据采集到场景挖掘的智能化闭环,加速智能驾驶落地应用。
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎
利用通义大模型构建个性化推荐系统——从数据预处理到实时API部署
本文详细介绍了基于通义大模型构建个性化推荐系统的全流程,涵盖数据预处理、模型微调、实时部署及效果优化。通过采用Qwen-72B结合LoRA技术,实现电商场景下CTR提升58%,GMV增长12.7%。文章分析了特征工程、多任务学习和性能调优的关键步骤,并探讨内存优化与蒸馏实践。最后总结了大模型在推荐系统中的适用场景与局限性,提出未来向MoE架构和因果推断方向演进的建议。
197 10
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
171 5
云上玩转Qwen3系列之三:PAI-LangStudio x Hologres构建ChatBI数据分析Agent应用
PAI-LangStudio 和 Qwen3 构建基于 MCP 协议的 Hologres ChatBI 智能 Agent 应用,通过将 Agent、MCP Server 等技术和阿里最新的推理模型 Qwen3 编排在一个应用流中,为大模型提供了 MCP+OLAP 的智能数据分析能力,使用自然语言即可实现 OLAP 数据分析的查询效果,减少了幻觉。开发者可以基于该模板进行灵活扩展和二次开发,以满足特定场景的需求。
构建高性能LLM推理服务的完整方案:单GPU处理172个查询/秒、10万并发仅需15美元/小时
本文将通过系统性实验不同的优化技术来构建自定义LLaMA模型服务,目标是高效处理约102,000个并行查询请求,并通过对比分析确定最优解决方案。
48 0
构建高性能LLM推理服务的完整方案:单GPU处理172个查询/秒、10万并发仅需15美元/小时
云上玩转Qwen3系列之四:构建AI Search RAG全栈应用
本文介绍如何利用人工智能平台 PAI-LangStudio、Qwen3 大模型与 AI 搜索开放平台结合 Elasticsearch,构建高效、精准的 AI Search RAG 智能检索应用。通过混合检索技术及 Agentic Workflow 编排,实现自然语言驱动的精准查询,并支持灵活扩展与二次开发,满足多样化场景需求。
一文读懂数据中台架构,高效构建企业数据价值
在数字化时代,企业面临数据分散、难以统一管理的问题。数据中台架构通过整合、清洗和管理数据,打破信息孤岛,提升决策效率。本文详解其核心组成、搭建步骤及常见挑战,助力企业高效用数。
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问