HoRain云--LangChain RAG

发布时间:2026/10/24 1:22:21
HoRain云--LangChain RAG RAGRetrieval-Augmented Generation检索增强生成让 AI 能够基于你的私有文档回答问题不需要微调模型只需将文档向量化存储Agent 就能检索相关内容来回答。RAG 是什么普通的大模型只能回答训练数据中有的内容。如果你的文档是私有的公司内部文档、个人笔记模型就不知道。RAG 解决了这个问题离线阶段将文档切分成小块 → 用 Embedding 模型转换为向量 → 存入向量数据库在线阶段用户提问 → 将问题转为向量 → 在向量数据库中搜索最相似的内容 → 将检索到的内容作为上下文发给模型 → 模型基于检索内容回答RAG 工作流程┌──────────────────────────────────────────────────────┐ │ 离线阶段索引 │ │ │ │ 文档 → DocumentLoader → TextSplitter → Embedding │ │ ↓ │ │ VectorStore │ └──────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────┐ │ 在线阶段检索 │ │ │ │ 用户提问 → Embedding → 相似度搜索 → 检索结果 │ │ ↓ │ │ 检索结果 用户问题 → 模型 → 回答 │ └──────────────────────────────────────────────────────┘环境准备安装 RAG 相关依赖$ pip install langchain-deepseek langchain-chroma chromadb包用途langchain-deepseek提供 OpenAI Embedding 模型langchain-chromaChroma 向量数据库的 LangChain 集成chromadbChroma 向量数据库轻量级适合入门Embedding 模型初始化实例from dotenv import load_dotenvload_dotenv()from langchain_openai import OpenAIEmbeddings# OpenAI 的文本嵌入模型# 将文本转换为向量一组浮点数embeddings OpenAIEmbeddings(modeltext-embedding-3-small)# 测试将一段文本转为向量text 菜鸟教程 RUNOOB 是一个编程学习平台vector embeddings.embed_query(text)print(f文本: {text})print(f向量维度: {len(vector)}) # text-embedding-3-small 是 1536 维print(f向量前 5 个值: {vector[:5]})运行结果文本: 菜鸟教程 RUNOOB 是一个编程学习平台 向量维度: 1536 向量前 5 个值: [0.0123, -0.0045, 0.0234, -0.0012, 0.0089]创建向量存储实例from langchain_openai import OpenAIEmbeddingsfrom langchain_chroma import Chroma# 初始化 Embedding 模型embeddings OpenAIEmbeddings(modeltext-embedding-3-small)# 创建 Chroma 向量存储数据保存在本地目录vector_store Chroma(collection_namerunoob_docs,embedding_functionembeddings,persist_directory./chroma_db, # 持久化目录)# 添加文档最简单的形式文本列表texts [菜鸟教程RUNOOB是一个免费的编程学习网站提供 HTML、CSS、JavaScript、Python 等教程。,Python3 基础教程共 30 章适合零基础入门包含环境搭建、语法基础、面向对象等内容。,HTML 基础教程共 25 章覆盖 HTML 标签、表单、多媒体等基础知识。,]# add_texts 自动将文本转为向量并存储vector_store.add_texts(texts)print(f已添加 {len(texts)} 个文档到向量存储)语义检索实例# 语义搜索——不依赖关键词匹配而是语义相似度results vector_store.similarity_search(我想学 Python有什么教程推荐,k2, # 返回最相似的 2 个结果)print(搜索结果)for i, doc in enumerate(results):print(f\n结果 {i1}:)print(f 内容: {doc.page_content})print(f 元数据: {doc.metadata})运行结果搜索结果 结果 1: 内容: Python3 基础教程共 30 章适合零基础入门... 元数据: {} 结果 2: 内容: 菜鸟教程RUNOOB是一个免费的编程学习网站... 元数据: {}注意第一个搜索结果比第二个更相关——虽然第一个包含 Python 关键词但它按 语义相似度 而非关键词匹配排序。这就是向量检索的优势。创建 Retriever 检索器Retriever 是 Vector Store 的标准化接口实例# 从 vector_store 创建 retrieverretriever vector_store.as_retriever(search_typesimilarity, # 相似度搜索search_kwargs{k: 3}, # 返回前 3 个结果)# 使用 retrieverdocs retriever.invoke(Python 学习路线)for doc in docs:print(f- {doc.page_content[:60]}...)

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询