如何从零搭建一个高质量的 LLM 应用?LangChain 与 Milvus 的组合是解决这一问题的有效方案。
作为开发大语言模型(LLM)应用的框架,LangChain 内部包含诸多模块且支持外部集成;Milvus 作为向量数据库同样支持多种 LLM 集成。二者结合不仅能轻松搭建 LLM 应用,还能强化 ChatGPT 等功能并提升效率。
01. LangChain + Milvus:解决幻觉问题
LangChain 概述
LangChain 是一种用于开发 LLM 应用的框架。其设计核心包括:
- Data-aware:连接 LLM 与其他数据源。
- Agentic:允许 LLM 与 LangChain 环境交互。
LangChain 包括许多模块,例如 Models、Prompts、Memory、Indexes、Chains、Agents 和 Callbacks。对于每个模块,LangChain 都提供标准化的可扩展接口。它还支持外部集成,甚至可实现端到端。LLM Wrapper 是 LangChain 的核心功能,提供了许多 LLM 模型,例如 OpenAI、Cohere、Hugging Face 等模型。
向量数据库的作用
LangChain 的另一大亮点是其扩展功能——集成各种向量数据库(如 Milvus、Faiss 等),因此可以很好地进行语义搜索。LangChain 通过 VectorStore Wrapper 提供了标准化的接口,从而简化数据加载和检索的流程。
例如,可以使用 LangChain 的 Milvus 类,通过 from_documents 方法存储文档的特征向量,然后调用 similarity_search 方法获取查询语句的相似向量(即在向量空间中找到距离最接近的文档向量),从而轻松实现语义搜索。
向量数据库在 LLM 应用中的用途
除了语义检索,向量数据库在 LLM 应用中还有以下关键用途:
- 存储问答上下文:增强 LLM 应用对于上下文的理解和记忆能力。
- 语义缓存:为 GPTCache 等 LLM 平台提供语义缓存,优化性能并节省成本。
- 降低幻觉概率:实现文档知识功能,让 LLM 基于参考文档库内容返回答案,减少'胡说八道'的可能性。
工作流程
- 在 Milvus 中存储由官方文档转化而来的文本向量。
- 在响应问题时搜索相关文档。
- ChatGPT 最后根据正确的上下文回答问题,从而产生准确的答案。
用户无需标记、训练数据或进行额外开发和微调,只需将文本数据转化为向量并存储在 Milvus 中,即可解决 ChatGPT 的幻觉问题。ChatGPT 的答案也是基于参考文档库中的内容而返回的,可大大提高其回答的准确性。
02. 搭建智能应用实战
前提条件
- 运行
pip install langchain命令安装 LangChain。 - 安装向量数据库 Milvus 或注册 Zilliz Cloud。可以选择在本地系统上安装和启动开源向量数据库 Milvus,或者选择全托管向量数据库 Zilliz Cloud 服务,免去运维部署的麻烦。本教程将使用 Zilliz Cloud。
1. 加载知识库数据
首先,需要使用标准格式加载数据。将文本切成小块,确保传入 LLM 模型的数据为一段段小的文本片段。
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders TextLoader
loader = TextLoader()
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=, chunk_overlap=)
docs = text_splitter.split_documents(documents)


