# langchain rag **Repository Path**: openour/langchain-rag ## Basic Information - **Project Name**: langchain rag - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-02 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # langchain ## 安装 ```shell pip install langchain pip install langchain_openai pip install langchain_community ``` ## 将已经安装的导出/导入 ```shell # 导出 pip freeze > requirements.txt # 导入 pip install -r requirements.txt ``` ## 核心组件与输入输出类型对照表 | 组件(Component) | 输入类型(Input Type) | 输出类型(Output Type) | 中文说明 | |------------------|----------------------------------------------------|-------------------|-----------------------------------------------| | **Prompt** | `dictionary`(字典) | `PromptValue` | 负责把输入变量(如上下文、问题等)格式化成可送入模型的 **提示词模板**。 | | **ChatModel** | `string` / `list of chat messages` / `PromptValue` | `ChatMessage` | 聊天模型(如 GPT-4、Claude)接受文本或聊天消息,返回一个**聊天消息对象**。 | | **LLM** | `string` / `list of chat messages` / `PromptValue` | `string` | 传统大语言模型接口(非多轮聊天),输入字符串或 PromptValue,输出纯文本。 | | **OutputParser** | LLM 或 ChatModel 的输出 | 取决于具体解析器 | 把模型输出的原始文本解析成结构化结果(如 JSON、数字、对象)。 | | **Retriever** | `string` | `List[Document]` | 检索器,用输入字符串(通常是查询)返回一组相关文档(通常来自向量数据库)。 | | **Tool** | `string` 或 `dictionary`(取决于工具) | 取决于工具类型 | 工具(如搜索、计算、API 调用),负责执行外部操作并返回结果。 | LangChain 的核心流程就是: **Prompt → (LLM / ChatModel) → OutputParser → (可选:Retriever / Tool)** ## 记忆实现的方式 | 方法 | 详细说明 | 使用对象 | |---------------|----------------------------------------|--------------------------------------------| | 聊天记录消息传递 | 将聊天历史消息显式传递到链中,用于 prompt 构建。 | `ChatPromptTemplate`、`MessagesPlaceholder` | | 聊天记录存储和加载(手动) | 手动实现聊天内容的存储与加载,适用于自定义存储逻辑。 | `ChatMessageHistory` | | 聊天记录的自动管理 | 基于 LCEL 的链包装器,可自动处理历史存储,支持多用户 Session。 | `RunnableWithMessageHistory` | ## 文档加载器 TextLoader、PDFLoader、Docx2txtLoader、WebBaseLoader、CSVLoader、CustomDocumentLoader ## 向量模型 | 模型 | 介绍 | 适用语言 | 案例场景 | |--------------|-------------------------------------------------|---------------|-------------------------------------------------------------------------------------| | **SBERT** | 基于 BERT 的 Sentence-BERT,能够高效计算句子间语义相似度,适用于工业级场景 | 多语言 | **电商平台商品搜索优化**:用户搜“防水运动鞋”,系统用 SBERT 将用户查询和商品描述编码,计算向量相似度,找到“防滑防水跑步鞋”“透气防暴雨运动鞋”等相似商品 | | **SimCSE** | 基于对比学习的句向量模型,分为无监督和有监督版本,效果强 | 以英语为主(亦有中文复现) | **社交媒体评论去重**:两条评论“这部电影太好看了!”和“这部影片简直太棒了!”,系统对两句编码后比较相似度,高于阈值则判断为重复内容 | | **Text2Vec** | 通用文本向量化模型,基于 Transformer,可用于分类、搜索、推荐等 NLP 应用 | 多语言 | **新闻推荐系统**:文章“人工智能发展趋势”编码为向量,与候选新闻比相似度,推荐“机器学习最新应用案例”“全球AI技术突破”等高相似度内容 | ### M3E系列 | 模型 | 介绍 | 案例场景 | 说明 / 优势 | |---------------|---------------------------|--------------------------------|--------------------------------------------------------------------------| | **m3e-small** | 轻量级、低资源消耗,适合 CPU 和移动端运行 | **1. 轻量级文档检索工具**(科研人员本地检索论文库) | - 本地向量化 + 本地索引- 支持离线、隐私安全- 单机即可快速检索 | | | | **2. 移动端智能客服**(电商 App 本地问答匹配) | - 用户提问与 FAQ 本地向量匹配- 本地推理,无需云端- 响应 < 500ms,弱网环境可用 | | **m3e-base** | 兼顾性能与效果,适合中等规模语义理解任务 | **1. 企业级知识库问答**(产品手册、流程、政策) | - 文档分句向量化 + 向量库(如 Milvus)- 问句检索后结合生成式模型回答- 适合企业内部知识系统 | | | | **2. 跨境电商商品分类**(中英文标题自动分类) | - 商品标题向量化 → FastText 多语言分类- 中英文一致性好,准确率可达 92%- 效率较规则引擎提升 80% | | **m3e-large** | 高性能、强语义表征能力,适合复杂场景与深度语义理解 | **1. 金融领域智能风控**(贷款材料欺诈检测) | - 文本向量化分析语义矛盾,如收入描述不一致- 较传统 NLP 欺诈识别提升 25%- 大幅降低人工审核成本 | | | | **2. 多模态信息检索(文本 + 图像)**(以图搜视频) | - 使用 CLIP 提取图像标签 + 使用 m3e-large 处理字幕语义向量- 构建跨模态语义检索系统- 检索召回率较关键词方法提升 35% | * 轻量级版本(small):解决边缘设备和低资源环境的语义理解需求,如移动客服、本地文档检索。 * 基础版本(base):满足企业级知识库多语言分类等中等规模场景,平衡效率与精度。 * 大规模版本(large):应对金融风控、多模态检索等复杂任务,挖掘深层语义关联。 ### BGE系列 | 模型 | 介绍 | 案例场景 | 说明 / 优势 | |-----------------------------|--------------------------|--------------------------------|---------------------------------------------------------------------| | **bge-small***(256维,轻量版)* | 低维度、轻量级,适合边缘设备、本地运行、实时性高 | **1. 智能手环健康问答**(设备本地健康助手) | - 将用户语音问题与健康知识库编码为 256 维向量- 手环 CPU 即可毫秒级计算- 无需联网,保护用户隐私 | | | | **2. 电商 App 实时推荐**(本地相似商品推荐) | - 用户搜索词与商品标题向量匹配- 本地缓存热门商品向量库- 弱网环境运行稳定,延迟 < 300ms | | **bge-base***(768维,效果均衡)* | 中等维度,高性价比,适合企业级知识库和多语言检索 | **1. 跨国企业多语言知识库**(中/英/日文档统一检索) | - 使用 bge-base-M3 向量化多语言文档并存入 Milvus- 任意语言提问自动跨语言语义对齐- 跨语言检索准确率达 89% | | | | **2. 医疗 RAG 问答系统**(医生临床检索) | - 医学文本分句向量化,结合 LLaMA 生成答案- 语义检索召回率提升 50%- 辅助医生快速定位诊疗依据 | | **bge-large***(1024维,效果最优)* | 高维度、高语义表达能力,适合复杂任务与长文本理解 | **1. 法律领域合同审查**(长文本风险条款识别) | - 合同全文向量化分析隐含语义关系- 自动定位“违约金条款”“赔偿责任”等关键内容- 长文本语义理解准确率达 91%,效率提升 70% | | | | **2. 学术论文跨领域检索**(跨学科深度语义搜索) | - 提取论文摘要深层语义(如 AI + 医学)- 支持跨领域关联检索,克服关键词限制- 检索相关性提升 45% | * 轻量级版本(small):聚焦边缘设备和实时交互场景,解决低资源环境下的语义检索需求。 * 平衡版本(base):适用于企业级多语言知库、RAG问答系统,兼顾效率与精度。 * 强语义(large):胜任法律、学术等复杂领域的长文本深度理解,挖掘语义隐含关联。 ### GTE系列 | 模型 | 介绍 | 案例场景 | 说明 / 优势 | |------------------------------------------------------------------|------------------------------------------------------------|-----------------------------|----------------------------------------------------------------------------------------------------------------------------| | **iic/nlp_gte_sentence-embedding_chinese-large***(512 维,中文高性能版)* | 基于预训练语言模型的中文通用文本表示模型;使用 RetroMAE 初始化 + 两阶段训练 | **电商平台商品检索与推荐** | - 将商品标题/描述编码为 512 维向量并存入 Milvus- 用户搜索“防水运动鞋”,模型召回语义相似商品,如“防滑防水跑步鞋”- 支持个性化推荐:可结合用户浏览历史向量- 语义理解强,适合大规模中文检索任务 | | **iic/gte_Qwen2-7B-instruct***(3584 维,长文本 + 多语言 + 高性能)* | 基于 Qwen2-7B 微调,支持 32,000 token 长上下文嵌入;2024 MTEB 多语言评测中表现领先 | **企业级文档问答与知识管理(多语言 + 长文本)** | - 将技术文档按章节切分并编码为 3584 维长文本向量- RAG 结构:检索段落 → 结合 Qwen2-72B 输出答案- 中英日三语均可输入,检索跨语言文档,无需翻译模块- 优势:多语言强、长文本强、跨语言准确率高,适合跨国企业大规模知识库 | | **iic/nlp_gte_sentence-embedding_chinese-base***(轻量模型,中等性能)* | 类似 chinese-large,但参数更小;基于 Dual Encoder 结构,兼顾速度与准确度 | **中小型企业中文客服工单分类** | - 将工单文本编码为向量 → 输入轻量分类器(如 FastText)- 部署成本低,可运行在中小企业本地服务器或边缘设备- 适合每日几千条工单场景- 性价比高:推理快、资源占用低,准确率兼顾良好 | * nlp_gte_sentence-embedding chinese-large:中文语义精准、轻量高效,电商检索、实时推荐。 * gte_Qwen2-7B-instruct:长文本处理、多语言跨模态检索,企业级RAG问答、跨国文档管理。 * nlp_gte_sentence-embedding chinese-base:轻量级、低成本部署,中小企客服分类、本地数据预处理。 | 场景 | 推荐模型 | |----------------|--------------------------------------------| | **中文 RAG 检索** | gte_Qwen2-7B-instruct / BGE-Large-zh / M3E | | **英文或多语言检索** | M3E / GTE | | **中小型项目、轻量需求** | Text2Vec / M3E-small | ## 模型托管 * https://huggingface.co/ * 上一个镜像https://hf-mirror.com/ ## 向量数据库对比表 | 维度 | pgvector | Pinecone | Milvus | Chroma | FAISS | |------------|-----------------------------------------------------------|---------------------------------------------|-------------------------------------------------|------------------------------------------------|----------------------------------------------| | **开源性** | 完全开源 | 闭源 | 开源(企业版闭源) | 开源(Apache 2.0) | 完全开源(Apache 2.0) | | **免费性** | 完全免费 | 基础版免费(存储有限) | 社区版免费(功能有限) | 免费(轻量级) | 完全免费(需自建) | | **核心优势** | 深度集成 SQL,混合数据支持;与 PostgreSQL 无缝结合;适合结构化+向量混合检索 | 全托管,高可扩展性,LLM 友好;无需运维 | 分布式高性能;适合大规模(亿级~百亿级)向量;支持 HNSW、IVF;CPU/GPU 混合计算 | 轻量易用,RAG 快速集成;适合小数据、快速验证 | 高性能向量计算;适合自研、自定义算法;纯向量场景;可深度优化 | | **典型适用场景** | 1. 需自定义检索逻辑2. 结构化 + 向量混合查询3. 和现有系统深度集成(如已有 PostgreSQL 基建) | 1. LLM 应用2. 全球化业务、多区域部署3. 高并发向量检索(如推荐、图像搜索) | 1. 工业级分布式场景2. 亿级+向量数据3. 金融/政府等数据安全要求高、需私有化 | 1. 小数据快速验证2. 快速上线 Demo 和原型3. 独立开发者、小团队、轻量级 RAG | 1. 需高度自定义检索算法2. 边缘计算/嵌入式设备3. 科研、特殊数据类型、高性能要求 | | **典型使用者** | 互联网企业、有 PG 技术栈的中大型企业 | 科技企业、AI 初创公司,预算充足且强调扩展性 | 技术团队强的中大型企业、互联网/AI 实验室 | 小型团队、独立开发者、学术研究 | 技术能力强的团队、科研机构、自研数据库的企业 | ## 学习进度 * v1.0.0 开始✅ * v1.1.0 helloworld入门✅ * v1.2.0 Model IO 单轮与多轮对话✅ * v1.3.0 语言模式和聊天模式 ✅ * v2.0.0 提示词✅ * v2.1.0 字符模板✅ * v2.2.0 会话模板✅ * v2.3.0 占位符✅ * v2.4.0 少样本✅ * v2.5.0 加载外部文件✅ * v2.6.0 部分赋值✅ * v2.7.0 组合嵌套模板✅ * v3.0.0 示例选择器✅ * v3.1.0 长度选择器✅ * v3.2.0 MMR:最大边际相关性 * v3.3.0 相似度选择器✅ * v3.4.0 自由样例选择 * v4.0.0 输出格式化✅ * v4.1.0 String格式✅ * v4.2.0 Json格式✅ * v4.3.0 Pydantic数据格式✅ * v4.4.0 格式修复Fix✅ * v4.5.0 重试Retry✅ * v4.6.0 自定义格式化✅ * v5.0.0 LCEL表达式✅ * v5.1.0 LCEL原理✅ * v5.2.0 RunnableLambda介绍✅ * v5.3.0 Runnable接口继承✅ * v5.4.0 Runnable串行✅ * v5.5.0 Runnable并行✅ * v5.6.0 Runnable Passthrough介绍✅ * v5.7.0 分支Branch✅ * v5.8.0 重试Retry✅ * v5.9.0 配置Config✅ * v5.10.0 动态参数✅ * v6.0.0 记忆✅ * v6.1.0 Memory-占位符✅ * v6.2.0 Memory-ChatMessageHistory实现✅ * v6.3.0 Memory-RunnableWithMessageHistory实现✅ * v6.4.0 Memory-长期记忆✅ * v7.0.0. 文档加载✅ * v7.1.0 TextLoader✅ * v7.2.0 PdfLoader✅ * v7.3.0 DocxLoader✅ * v7.4.0 WebLoader✅ * v7.5.0 CsvLoader✅ * v7.6.0 文档自定义✅ * V8.0.0 文档拆分✅ * V8.1.0 字符方式✅ * V8.2.0 递归方式✅ * V8.3.0 token✅ * V8.4.0 自定义✅ * V9.0.0 向量✅ * V9.1.0 介绍✅ * V9.2.0 huggingface✅ * V9.3.0 modelscope✅ * V9.4.0 相似度✅ * V9.5.0 向量存储数据库✅ * V9.6.0 向量存储数据库使用✅ * V9.7.0 向量存储归一化✅ * V10.0.0 检索✅ * V10.1.0 检索-基础介绍✅ * V10.2.0 multiquery多次检索✅ * V10.3.0 上下文压缩检索✅ * V10.4.0 相似度-doc分值✅ * V10.5.0 检索过滤相似度分值✅ * V10.6.0 ensamble聚合检索器✅ * V10.7.0 LongContext重排序✅ * V10.8.0 Self自查询✅ * v10.9.0 重排序✅ * V11.0.0 工具 * V11.1.0 装饰器Tool介绍✅ * V11.2.0 装饰器Tool-代码✅ * V11.3.0 Tool工具类(弃)✅ * V11.4.0 StructedTools✅ * V11.5.0 BaseTool✅ * V11.6.0 LLM-BindTool✅ *