RAG - Hybrid retrieval + Rerank
向量检索 当前主流的 RAG 检索方式主要采用向量检索,通过语义相似度来匹配 Chunk 向量检索并非万能,在某些场景下无法替代传统关键词检索的优势 当需要精准搜索的时候,向量检索的准确性就往往不如关键词检索 当用户输入的问题非常简短,语义匹配的效果可能不尽理想 关键词检索的适用场景 精确匹配 少量字符的匹配 - 不适合用向量检索 低频词汇的匹配 混合检索 结合关键词检索和语义匹配的优势 在 RAG 检索场景中,首要目标是确保最相关的结果能够出现在候选列表中 向量检索和关键词检索各具优势,混合检索通过结合多种检索技术,弥补各自不足,提供一种更加全面的搜索方案 重排序技术在检索系统中扮演着至关重要的角色 即使检索算法已经能够捕捉到所有相关的结果,重排序过程依然不可或缺 确保最符合用户意图和查询语义的结果优先展示,提升用户的搜索体验和结果的准确性 在多个数据集和多个检索任务中,混合检索和重排序的组合均取得了最佳表现 融合检索 / 多路召回 https://python.langchain.com/v0.2/api_reference/community/r...
RAG - Vector Stores
Embedding Vector Store概述 在 AI 时代,文字、图像、语音、视频等多模态数据的复杂性显著增加 多模态数据具有非结构化和多维特征 向量表示能够有效表示语义和捕捉潜在的语义关系 促使向量数据库成为存储、检索和分析高维向量的关键工具 Qdrant / Milvus 优势 SQL vs NoSQL 传统数据库通常分为关系型(SQL)数据库和非关系型(NoSQL)数据库 存储复杂、非结构化或半结构化信息的需求,主要依赖于 NoSQL 的能力 Store Desc Note Key-Value 用于简单的数据存储,通过 Key 来快速访问数据 精准定位信息 Document 用于存储文档结构的数据,如 JSON 格式 复杂的结构化信息 Graph 用于表示和存储复杂的关系数据,常用于社交网络、推荐等场景 复杂的关系数据 Vector 用于存储和检索基于向量表示的数据,用于 AI 模型的高维度和复杂的嵌入向量 语义最相关的数据 向量数据库的核心在于能够基于向量之间的相似性,能够快速、精确地定位和检索数据 向量数据库不仅为嵌入向量提供了...
RAG - KG-RAG
Knowledge Graph 知识图谱也称为语义网络,表示现实世界实体的网络,并说明它们之间的关系 信息通常存储在图形数据库中,并以图形结构直观呈现 知识图谱由三部分组成 - 节点 + 边 + 标签 Why 降噪 + 提召 + 提准 传统 RAG 中的 Chunking 方式会召回一些噪音的 Chunk 引入 KG,可以通过实体层级特征来增强相关性 传统 RAG 中的 Chunk 之间是彼此孤立的,缺乏关联,在跨文档回答任务上表现不太好 引入 KG,增强 Chunk 之间的关联,并提升召回的相关性 假设已有 KG 数据存在,可以将 KG 作为一路召回信息源,补充上下文信息 Chunk 之间形成的 KG,可以提供 Graph 视角的 Embedding,来补充召回特征 构建一个高质量、灵活更新、计算简单的大规模图谱的代价很高 - RAG 会很慢 https://hub.baai.ac.cn/view/30017 https://hub.baai.ac.cn/view/33147 https://hub.baai.ac.cn/view/33390 https://hub.baa...
RAG - Chatbot
Fine-tuning vs RAG 核心诉求 - 实时更新知识库,不需要模型去深度探讨问题,使用已有知识经验去解答问题 Fine-tuning RAG 知识整合 直接把数据融入到模型参数 存储在外部知识库 知识更新 每次更新内容都需要重新训练模型,更新成本高 只需要在外部知识库插入记录,更新成本低 响应速度 很快,直接给出回答 现在外部知识库进行检索,然后再生成 实时更新 很难做到实时更新 外部知识库可以实时更新 人为干预 只能通过 Prompt 干预 可以通过外部知识库的语料和 Prompt 控制 领域定制 可以针对特定领域进行深度定制 依赖通用模型能力 适合使用 Fine-tuning 的场景 特定场景下的高一致性和定制化 数据量充足且稳定 训练 - 拥有高质量的对话原始数据 微调 - 基于现有对话数据做对话助手 强个性化需求 文言文的理解和输出 - 需要使用大量文言文语料微调后,才能满足需求 高速响应 Fine-tuning 能够直接输出有效内容,而 RAG 需要先检索再生成 LLM LLM 针对输入是有长度限制的,计量单位为 To...
RAG - Chunking + Embedding
概述 Chunking Documents 经过解析后,通过 Chunking 将信息内容划分为适当大小的 Chunks - 能够高效处理和精准检索 Chunk 的本质在于依据一定的逻辑和语义原则,将长文本拆解为更小的单元 Chunking 有多种策略,各有侧重,选择适合特定场景的 Chunking 策略,有助于提升 RAG 召回率 Embedding Embedding Model 负责将文本数据映射到高维向量空间,将输入的文档片段转换为对应的嵌入向量 嵌入向量捕捉了文本的语义信息,并存储到向量库中,以便于后续检索 Query 同样通过 Embedding Model 的处理生成 Query 的嵌入向量,在向量库中通过向量检索匹配最相似的文档片段 根据不同的场景,评估并选择最优的 Embedding Model,以确保 RAG 的检索性能符合要求 Chunking影响 Documents 包含丰富的上下文信息和复杂的语义结构 通过 Chunking,模型可以更有效地提取关键信息,并减少不相关内容的干扰 Chunking 的目标 确保每个片段在保留核心语义的同时,具备相对独立的语...
RAG - Frameworks
Overview Retrieval-Augmented Generation (RAG) is an AI framework that enhances the capabilities of large language models (LLMs) by incorporating external knowledge sources. It helps overcome limitations such as knowledge cutoff dates and reduces the risk of hallucinations in LLM outputs. RAG works by retrieving relevant information from a knowledge base and using it to augment the LLM’s input, allowing the model to generate more accurate, up-to-date, and contextually relevant responses. Haystack Hays...
RAG - Data Processing
数据存储 LLM 变成生产力,有两个制约因素 - 交互过程中的长文本 + 内容的实时更新 在传统的应用开发中,数据存储在数据库中,保留了应用的全部记忆 在 AI 时代,向量数据库充当了这一角色 在 RAG 系统中,数据被转换为高维向量形式,使得语言模型能够进行高效的语义相似度计算和检索 在向量数据库中,查找变成了计算每条记录的向量近似度,然后按照分值倒序返回结果 RAG 就如何存储向量的方法论,根据不同的实现策略,衍生出了不同的 RAG 技术 利用图结构表示和检索知识的 GraphRAG 结合知识图谱增强生成能力的 KG-RAG - Knowledge Graph Augmented Generation AI 应用的数据建模强调的是数据的语义表示和关联,以支持更灵活的查询和推理 高质量的数据处理,不仅影响检索的准确性,还直接决定了 LLM 生成内容的质量和可靠性 Embedding 将所有内容转成文本 + 额外数据(用来关联数据) 选择一个 Embedding 模型,把文本转成向量,并存储到向量数据库中 厂商 LLM Embedding 国产 百度 文心一言 Embeddi...
RAG - Methodology
场景识别 分析业务流程,找出业务中依赖大量知识和信息处理的环节 复杂决策环节 在需要多维度信息综合分析与判断的业务流程中,RAG 可以为决策者提供实时的信息支持 使用 LLM 从各种来源的信息提炼出关键点,加权求和 - 压缩和整理非格式化信息 重复性内容生成 企业中有大量重复且标准化的内容生成任务 可以用程序去归纳流程,用 LLM 和 RAG 去填充每个环节 用户交互场景 增加自然语言交互 识别问题,找出流程痛点,并识别 LLM 和 RAG 能发挥的作用 信息碎片化 + 难以系统化输出 使用 LLM 和 RAG 能够通过自动化整合固定信息源,定期获取信息 统一整理(或生成)到统一的知识库,将分散的知识转化为结构化输出 人工处理效率低下 通过 LLM 自动化任务,可以更专注于更有创造力的工作 小步快跑 + 快速迭代 - LLM 技术变化极快 MVP Minimum viable product 数据驱动的迭代优化 持续收集用户行为数据和反馈,通过 A/B 测试等方法,不断优化系统表现
RAG - Document Parsing
文档解析 文档解析的本质 - 将格式各异、版本多样、元素多种的文档数据,转化为阅读顺序正确的字符串信息 Quality in, Quality out 是 LLM 的典型特征 高质量的文档解析能够从各种复杂格式的非结构化数据中提取出高精度信息 对 RAG 系统的最终效果起到决定性作用 RAG 系统的应用场景主要集中在专业领域和企业场景 除了数据库,更多的数据以 PDF、Word 等多种格式存储 PDF 文件有统一的排版和多样化的结构形式,是最为常见的文档数据格式和交换格式 Quality in, Quality out LangChainDocument Loaders LangChain 提供了一套功能强大的文档加载器(Document Loaders) LangChain 定义了 BaseLoader 类和 Document 类 BaseLoader - 定义如何从不同数据源加载文档 Document - 统一描述不同文档类型的元数据 开发者可以基于 BaseLoader 为特定数据源创建自定义加载器,将其内容加载为 Document 对象 Document Loader 模...
RAG - LangChain
Practice LangChain RAG https://github.com/langchain-ai/rag-from-scratch RAG 如何随着长期 LLM 而改变 Is RAG Really Dead? https://www.youtube.com/watch?v=SsHUNfhF32s 自适应 RAG 根据复杂程度动态地将查询路由到不同的 RAG 方法 - Command-R @ LangGraph Adaptive RAG https://www.youtube.com/watch?v=04ighIjMcAI Code https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_adaptive_rag_cohere.ipynb Paper https://arxiv.org/abs/2403.14403 Adaptive RAG 在循环单元测试中自我纠正检索错误,以确定文档相关性并返回到网络搜索 在 LangGraph 中实现 Mistral 7B + Ol...















