Giter Club home page Giter Club logo

awesome-llm-rag-application's Introduction

Awesome-LLM-RAG-Application

the resources about the application based on LLM with RAG pattern

综述

介绍

比较

开源工具

RAG框架

  • LangChain
  • langchain4j
  • LlamaIndex
  • GPT-RAG
    • GPT-RAG提供了一个强大的架构,专为RAG模式的企业级部署量身定制。它确保了扎实的回应,并建立在零信任安全和负责任的人工智能基础上,确保可用性、可扩展性和可审计性。非常适合正在从探索和PoC阶段过渡到全面生产和MVP的组织。
  • QAnything
    • 致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。任何格式的本地文件都可以往里扔,即可获得准确、快速、靠谱的问答体验。目前已支持格式: PDF,Word(doc/docx),PPT,Markdown,Eml,TXT,图片(jpg,png等),网页链接
  • Quivr
    • 您的第二大脑,利用 GenerativeAI 的力量成为您的私人助理!但增强了人工智能功能。
    • Quivr
  • Dify
    • 融合了 Backend as Service 和 LLMOps 的理念,涵盖了构建生成式 AI 原生应用所需的核心技术栈,包括一个内置 RAG 引擎。使用 Dify,你可以基于任何模型自部署类似 Assistants API 和 GPTs 的能力。
  • Verba
    • 这是向量数据库weaviate开源的一款RAG应用,旨在为开箱即用的检索增强生成 (RAG) 提供端到端、简化且用户友好的界面。只需几个简单的步骤,即可在本地或通过 OpenAI、Cohere 和 HuggingFace 等 LLM 提供商轻松探索数据集并提取见解。
  • danswer
    • 允许您针对内部文档提出自然语言问题,并获得由源材料中的引用和参考文献支持的可靠答案,以便您始终可以信任您得到的结果。您可以连接到许多常用工具,例如 Slack、GitHub、Confluence 等。
  • RAGFlow
    • RAGFlow:基于OCR和文档解析的下一代 RAG 引擎。在文档解析上做了增强,2024年4月1日开源,在数据处理上支持文档结构、图片、表格的深度解析,支持可控分片,可对查询进行深入分析识别关键信息,在检索上提供多路找回/重排能力,界面提供友好的引用参考查看功能。

预处理

  • Unstructured
    • 该库提供了用于摄取和预处理图像和文本文档(如 PDF、HTML、WORD 文档等)的开源组件。 unstructured的使用场景围绕着简化和优化LLM数据处理工作流程, unstructured模块化功能和连接器形成了一个有内聚性的系统,简化了数据摄取和预处理,使其能够适应不同的平台,并有效地将非结构化数据转换为结构化输出。
  • Open Parse
    • 对文档进行分块是一项具有挑战性的任务,它支撑着任何 RAG 系统。高质量的结果对于人工智能应用的成功至关重要,但大多数开源库处理复杂文档的能力都受到限制。
    • Open Parse 旨在通过提供灵活、易于使用的库来填补这一空白,该库能够直观地识别文档布局并有效地对其进行分块。

路由

评测框架

  • ragas
    • Ragas是一个用于评估RAG应用的框架,包括忠诚度(Faithfulness)、答案相关度(Answer Relevance)、上下文精确度(Context Precision)、上下文相关度(Context Relevancy)、上下文召回(Context Recall)
  • tonic_validate
    • 一个用于 RAG 开发和实验跟踪的平台,用于评估检索增强生成 (RAG) 应用程序响应质量的指标。
  • deepeval
    • 一个简单易用的开源LLM评估框架,适用于LLM应用程序。它与 Pytest 类似,但专门用于单元测试 LLM 应用程序。 DeepEval 使用 LLMs 以及在您的计算机上本地运行的各种其他 NLP 模型,根据幻觉、答案相关性、RAGAS 等指标来评估性能。
  • trulens
    • TruLens 提供了一套用于开发和监控神经网络的工具,包括大型语言模型。这包括使用 TruLens-Eval 评估基于 LLMs 和 LLM 的应用程序的工具以及使用 TruLens-Explain 进行深度学习可解释性的工具。 TruLens-Eval 和 TruLens-Explain 位于单独的软件包中,可以独立使用。
  • langchain-evaluation
  • Llamaindex-evaluation

Embedding

  • BCEmbedding
    • 网易有道开发的双语和跨语种语义表征算法模型库,其中包含 EmbeddingModel和 RerankerModel两类基础模型。EmbeddingModel专门用于生成语义向量,在语义搜索和问答中起着关键作用,而 RerankerModel擅长优化语义搜索结果和语义相关顺序精排。
  • BGE-Embedding
    • 北京智源人工智能研究院开源的embeeding通用向量模型,使用retromae 对模型进行预训练,再用对比学习在大规模成对数据上训练模型。
  • bge-reranker-large
    • 北京智源人工智能研究院开源,交叉编码器将对查询和答案实时计算相关性分数,这比向量模型(即双编码器)更准确,但比向量模型更耗时。 因此,它可以用来对嵌入模型返回的前k个文档重新排序
  • gte-base-zh
    • GTE text embedding GTE中文通用文本表示模型 通义实验室提供

安全护栏

  • NeMo-Guardrails

    • NeMo Guardrails 是一个开源工具包,用于为基于 LLM 的对话应用程序轻松添加可编程的保护轨。Guardrails(简称 "轨")是控制大型语言模型输出的特定方式,例如不谈论政治、以特定方式响应特定用户请求、遵循预定义对话路径、使用特定语言风格、提取结构化数据等。
  • Guardrails

    • Guardrails 是一个 Python 框架,通过执行两个关键功能来帮助构建可靠的人工智能应用程序:
      • Guardrails 在应用程序中运行输入/输出防护装置,以检测、量化和减轻特定类型风险的存在。要查看全套风险,请访问 Guardrails Hub
      • Guardrails 可帮助您从 LLMs 生成结构化数据。对输入和输出进行检测
  • LLM-Guard

    • LLM Guard 是一款旨在增强大型语言模型 (LLMs) 安全性的综合工具。
    • 输入(Anonymize 匿名化、BanCode 禁止代码、BanCompetitors 禁止竞争对手、BanSubstrings 禁止子串、BanTopics 禁止话题、PromptInjection 提示词注射 、Toxicity 毒性等)
    • 输出(代码、anCompetitors 禁止竞争对手、Deanonymize 去匿名化、JSON、LanguageSame 语言相同、MaliciousURLs 恶意URL、NoRefusal 不可拒绝、FactualConsistency 事实一致性、URLReachability URL可达性等)
    • 各个检测功能是利用了huggingface上的各种开源模型
  • Llama-Guard

    • Llama Guard 是一个新的实验模型,可为 LLM 部署提供输入和输出防护栏。Llama Guard 是经过微调的 Llama-7B 模型。
Guardrails in your application
- [RefChecker](https://github.com/amazon-science/RefChecker) - RefChecker 提供了一个标准化的评估框架来识别大型语言模型输出中存在的微妙幻觉。

Prompting

  • YiVal
    • GenAI 应用程序的自动提示工程助手 YiVal 是一款最先进的工具,旨在简化 GenAI 应用程序提示和循环中任何配置的调整过程。有了 YiVal,手动调整已成为过去。这种以数据驱动和以评估为中心的方法可确保最佳提示、精确的 RAG 配置和微调的模型参数。使用 YiVal 使您的应用程序能够轻松实现增强的结果、减少延迟并最大限度地降低推理成本!

SQL增强

  • vanna
    • Vanna 是一个MIT许可的开源Python RAG(检索增强生成)框架,用于SQL生成和相关功能。
    • Vanna 的工作过程分为两个简单步骤 - 在您的数据上训练 RAG“模型”,然后提出问题,这些问题将返回 SQL 查询。训练的数据主要是一些 DDL schema、业务说明文档以及示例sql等,所谓训练主要是将这些数据embedding化,用于向量检索。

LLM部署和serving

可观测性

其他

  • RAGxplorer
    • RAGxplorer 是一种交互式 Streamlit 工具,通过将文档块和的查询问句展示为embedding向量空间中可的视化内容来支持检索增强生成 (RAG) 应用程序的构建。
  • Rule-Based-Retrieval
    • rule-based-retrieval是一个 Python 包,使您能够创建和管理具有高级筛选功能的检索增强生成 (RAG) 应用程序。它与用于文本生成的 OpenAI 和用于高效矢量数据库管理的 Pinecone 无缝集成。

应用参考

  • Kimi Chat
    • 支持发送网页链接和上传文件进行回答
  • GPTs
    • 支持上传文档进行类似RAG应用
  • 百川知识库
    • 1.新建知识库后得到知识库 ID;
    • 2.上传文件,获取文件 ID;
    • 3.通过文件 ID 与知识库 ID 进行知识库文件关联,知识库中可以关联多个文档。
    • 4.调用对话接口时通过 knowledge_base 字段传入知识库 ID 列表,大模型使用检索到的知识信息回答问题。
  • COZE
    • 应用编辑平台,旨在开发下一代人工智能聊天机器人。无论您是否有编程经验,该平台都可以让您快速创建各种类型的聊天机器人并将其部署在不同的社交平台和消息应用程序上。
  • Devv-ai
    • 最懂程序员的新一代 AI 搜索引擎,底层采用了RAG的大模型应用模式,LLM模型为其微调的模型。

论文

  • Retrieval Augmented Generation: Streamlining the creation of intelligent natural language processing models
  • Lost in the Middle: How Language Models Use Long Contexts
  • 论文-设计检索增强生成系统时的七个故障点
    • Seven Failure Points When Engineering a Retrieval Augmented Generation System
  • Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agents
  • Bridging the Preference Gap between Retrievers and LLMs
  • Tuning Language Models by Proxy
  • Zero-Shot Listwise Document Reranking with a Large Language Model
    • 两种重新排序方法:逐点重新排名、列表重新排名。
    • 逐点重新排名是给定文档列表,我们将查询+每个文档单独提供给 LLM 并要求它产生相关性分数。
    • 列表重新排名是给定文档列表,我们同时向 LLM 提供查询 + 文档列表,并要求它按相关性对文档进行重新排序。
    • 建议对 RAG 检索到的文档按列表重新排序,列表重排优于逐点重排。
  • Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection
    • 按需检索(On-Demand Retrieval):
      • SELF-RAG首先确定是否需要通过检索来增强持续生成的内容。这是通过在模型的输出中插入特殊的检索标记(Retrieve tokens)来实现的,这些标记指示是否需要检索。如果模型确定需要检索,它会输出一个检索标记,调用检索器模型(Retriever model)根据当前的输入和之前的生成内容来检索相关的文段。
    • 并行处理检索文段(Parallel Processing of Retrieved Passages):
      • SELF-RAG会并行处理检索到的多个文段,评估它们的相关性,并基于这些文段生成相应的任务输出。对于每个检索到的文段,模型会预测一个相关性标记(ISREL tokens),以判断文段是否与输入相关。如果文段相关,模型进一步评估文段是否支持模型生成的内容,并预测支持度标记(ISSUP tokens)。
    • 自我反思和批判(Self-Reflection and Critique):
      • 在生成每个段落后,SELF-RAG会生成批判标记(Critique tokens),以批判自己的输出并选择最佳段落。这些批判标记包括对生成内容的事实性(ISSUP)和整体质量(ISUSE)的评价。模型使用这些批判标记来评估自己生成的每个段落,并根据这些评价来调整后续的生成过程。
    • 训练过程(Training Process):
      • SELF-RAG通过一个批评模型(Critic model)来训练生成器模型(Generator model)。批评模型用于生成反思标记,以评估检索到的文段和生成任务输出的质量。训练数据是通过将反思标记插入到原始语料库中来创建的,这些标记是由批评模型预测的。生成器模型被训练为能够自己生成反思标记,而不是在推理时依赖于批评模型。
    • 推理时的可定制解码(Customizable Decoding at Inference):
      • SELF-RAG允许在推理时根据反思标记的预测来调整检索频率和模型行为,以满足不同的下游应用需求。通过使用加权线性组合的反思标记概率作为段落得分,可以实现对生成内容的软约束和硬控制。
  • Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity
    • Adaptive-RAG是一个动态选择最合适策略的框架,用于处理不同复杂度的查询。它从最简单的到最复杂的策略中选择最适合给定查询复杂度的策略。
    • 查询复杂度评估(Query Complexity Assessment):
      • Adaptive-RAG首先使用一个预训练的较小语言模型(Classifier),该模型被训练用来预测输入查询(query)的复杂度。查询被分为三个复杂度等级:简单(A)、中等(B)和复杂(C),分别对应不同的处理策略。
    • 选择适当的策略:
      • 根据查询复杂度的预测结果,Adaptive-RAG动态选择最合适的策略来处理查询。简单查询(A)可能只需要LLM自身的知识即可回答,不需要外部检索。中等复杂度查询(B)可能需要单步检索来提供额外的信息。复杂查询(C)可能需要多步检索和推理来整合多个文档中的信息。
    • 检索(Retrieval):
      • 对于需要检索的查询,Adaptive-RAG使用检索器(Retriever)从知识库中检索与查询相关的文档。
    • 生成答案(Answer Generation):
      • 利用检索到的文档,LLM生成答案。对于单步检索,这可能涉及将检索到的信息整合到LLM的输入中;而对于多步检索,则可能需要迭代地访问检索器和LLM,直到形成最终答案。
  • Corrective Retrieval Augmented Generation
    • 检索文档:使用检索器(R)从知识库(C)中检索与输入查询(x)相关的文档集合(D),其中D包含k个文档({dr1, ..., drk})。
    • 检索评估器:构建一个轻量级的检索评估器(E),用于评估检索到的文档(D)对输入查询(x)的相关性,并为每个检索到的文档分配一个相关性分数。
    • 计算置信度:基于检索评估器给出的相关性分数,计算一个置信度,该置信度将决定后续采取的动作。
    • 动作触发:根据置信度的阈值,触发三种可能的动作之一:
      • 正确(Correct):如果至少一个文档的相关性分数高于上限阈值,认为检索是正确的。
      • 错误(Incorrect):如果所有文档的相关性分数都低于下限阈值,认为检索是错误的。
      • 模糊(Ambiguous):如果文档的相关性分数介于上下阈值之间,采取模糊动作。
    • 知识精炼:对于触发“正确”动作的文档,通过分解、过滤和重构算法进一步提取文档中的关键知识片段,形成内部知识。
    • 网络搜索:对于触发“错误”动作的情况,放弃检索到的文档,转而使用网络搜索来寻找补充知识,形成外部知识。
    • 知识融合:在“模糊”动作下,将内部知识和外部知识结合起来,以增强系统的鲁棒性。
    • 生成模型预测:最后,使用任意生成模型(G)基于优化后的检索结果(k)和输入查询(x)生成响应(y)。
    • 输出响应:生成的响应(y)作为系统对用户查询的最终回答。

RAG构建策略

预处理

检索

检索后处理

重排序

Contextual(Prompt) Compression

其他

  • Bridging the rift in Retrieval Augmented Generation
    • 不是直接微调检索器和语言模型等效果不佳的基础模块,而是引入了第三个参与者——位于现有组件之间的中间桥接模块。涉及技术包括排序压缩上下文框架条件推理脚手架互动询问等 (可参考后续论文)

评估

实践

幻觉

课程

视频

其他

Star History Chart

awesome-llm-rag-application's People

Contributors

lizhe2004 avatar xinzhuang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.