RAG项目推荐:bRAG-langchain-构建自己的 RAG 应用程序所需了解的一切

检索增强生成 (RAG) 项目

项目链接:https://github.com/bRAGAI/bRAG-langchain/tree/main

bRAGAI 的官方平台即将上线。加入等待列表,成为早期使用者之一!

本仓库包含了对检索增强生成 (RAG) 在各种应用中的全面探索。
每个笔记本都提供了从入门级到高级实现的详细实践指南,包括多查询和自定义 RAG 构建。

项目结构

如果你想直接开始,请查看文件 full_basic_rag.ipynb -> 这个文件将为你提供一个完全可定制的 RAG 聊天机器人的样板代码。

确保在虚拟环境中运行你的文件(查看 开始使用 部分)。

以下笔记本可以在 tutorial_notebooks/ 目录下找到。

[1]_rag_setup_overview.ipynb

这个入门笔记本提供了 RAG 架构及其基础设置的概述。
笔记本内容包括:

  • 环境设置:配置环境、安装必要的库和 API 设置。
  • 初始数据加载:基本的文档加载器和数据预处理方法。
  • 嵌入生成:使用各种模型生成嵌入,包括 OpenAI 的嵌入。
  • 向量存储:设置向量存储(ChromaDB/Pinecone)以实现高效的相似性搜索。
  • 基本 RAG 管道:创建一个简单的检索和生成管道作为基线。

[2]_rag_with_multi_query.ipynb

在基础之上,这个笔记本介绍了 RAG 管道中的多查询技术,探索内容包括:

  • 多查询设置:配置多个查询以多样化检索。
  • 高级嵌入技术:使用多个嵌入模型来优化检索。
  • 多查询管道:实现多查询处理以提高响应生成的相关性。
  • 比较与分析:与单查询管道进行比较并分析性能改进。

[3]_rag_routing_and_query_construction.ipynb

这个笔记本深入探讨了自定义 RAG 管道。
内容包括:

  • 逻辑路由:实现基于函数的路由,根据编程语言将用户查询分类到适当的数据源。
  • 语义路由:使用嵌入和余弦相似性将问题引导到数学或物理提示,优化响应准确性。
  • 元数据过滤器的查询结构:定义结构化搜索模式以处理 YouTube 教程元数据,实现高级过滤(例如,按观看次数、发布日期)。
  • 结构化搜索提示:利用 LLM 提示生成数据库查询,根据用户输入检索相关内容。
  • 与向量存储的集成:将结构化查询与向量存储连接,以实现高效的数据检索。

[4]_rag_indexing_and_advanced_retrieval.ipynb

继续之前的自定义内容,这个笔记本探讨了:

  • 文档分块前言:指向外部资源以了解文档分块技术。
  • 多表示索引:设置多向量索引结构以处理具有不同嵌入和表示的文档。
  • 摘要的内存存储:使用 InMemoryByteStore 存储文档摘要以及父文档,实现高效检索。
  • 多向量检索器设置:集成多个向量表示以根据用户查询检索相关文档。
  • RAPTOR 实现:探索 RAPTOR,一种高级索引和检索模型,链接到深入资源。
  • ColBERT 集成:演示基于 ColBERT 的令牌级向量索引和检索,捕捉细粒度的上下文含义。
  • ColBERT 的维基百科示例:使用 ColBERT 检索模型检索有关宫崎骏的信息进行演示。

[5]_rag_retrieval_and_reranking.ipynb

这个最后的笔记本将 RAG 系统组件结合在一起,重点关注可扩展性和优化:

  • 文档加载和拆分:加载并分块文档以进行索引,准备将其存储到向量存储中。
  • 使用 RAG-Fusion 的多查询生成:使用基于提示的方法从单个输入问题生成多个搜索查询。
  • 互惠排名融合 (RRF):实现 RRF 以重新排序多个检索列表,合并结果以提高相关性。
  • 检索器和 RAG 链设置:构建检索链以回答查询,使用融合排名和 RAG 链提取上下文相关信息。
  • Cohere 重新排序:演示使用 Cohere 模型进行重新排序,以进行额外的上下文压缩和优化。
  • CRAG 和 Self-RAG 检索:探索 CRAG 和 Self-RAG 等高级检索方法,并链接到示例。
  • 长上下文影响的探索:链接到解释长上下文检索对 RAG 模型影响的资源。

开始使用

前提条件:Python 3.11.7(推荐)

  1. 克隆仓库

    git clone https://github.com/bRAGAI/bRAG-langchain.git cd bRAG-langchain
    
  2. 创建虚拟环境

    python -m venv venvsource venv/bin/activate
    
  3. 安装依赖:确保安装 requirements.txt 中列出的所需包。

    pip install -r requirements.txt

  4. 运行笔记本
    [1]_rag_setup_overview.ipynb 开始,熟悉设置过程。按顺序继续其他笔记本,以构建和实验更高级的 RAG 概念。

  5. 设置环境变量

    • 复制根目录中的 .env.example 文件并将其命名为 .env,并包含以下键(替换为你的实际键):

      #LLM 模型
      OPENAI_API_KEY="your-api-key"#LangSmith
      LANGCHAIN_TRACING_V2=true
      LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
      LANGCHAIN_API_KEY="your-api-key"
      LANGCHAIN_PROJECT="your-project-name"#Pinecone 向量数据库
      PINECONE_INDEX_NAME="your-project-index"
      PINECONE_API_HOST="your-host-url"
      PINECONE_API_KEY="your-api-key"
      
  6. 笔记本顺序
    为了按结构化方式跟进项目:

    • [1]_rag_setup_overview.ipynb 开始

    • 继续 [2]_rag_with_multi_query.ipynb

    • 然后阅读 [3]_rag_routing_and_query_construction.ipynb

    • 继续 [4]_rag_indexing_and_advanced_retrieval.ipynb

    • 最后完成 [5]_rag_retrieval_and_reranking.ipynb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865122.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五上数学LK情况反馈203班

五上数学LK情况反馈203班 上周五进行了LK,使用答题卡,电子阅卷,答题卡放在中学部,我们只有拿着学生没有写答案的试卷讲评,需要知道具体错误的,由周老师告知学生,今天晚上有半数以上学生,周老师已经告知学生错误题目了,分数已经公布。 本次考试难度较大,带有XB的性质,…

【金融行业】2024中国网络安全产业势能榜优能企业 金融行业典型案例展示

金融行业一直是信息安全的重点领域,随着金融科技的快速发展和数字货币的崛起,金融机构面临着前所未有的挑战。数据泄露、网络攻击等安全事件的频发,促使金融企业加强安全保障。然而,信息安全的提高不仅仅是防止外部威胁的关键,更重要的是确保业务在突发事件或安全事件发生…

Timer、Ticker使用及其注意事项

在 Golang 中,Timer 和 Ticker 是常用的定时器工具,但它们的使用易出错,尤其是初学者。本文将深入探讨定时器的正确使用方式、常见误区,并通过源码解读帮助你更好地理解它们的工作原理。Timer、Ticker使用及其注意事项 在刚开始学习golang语言的时候就听说Timer、Ticker的使…

entire vs whole; coca

entire 868 whole 466left 4WORD 1: ENTIRE WORD W1 W2 AN 15134 932 VIRTUALLY 354 71 Virtually the entire sample几乎所有样本 Virtually the entire Israeli governing class几乎整个以色列统治阶级 DEVOTED 216 71 devoted his entire care…

第22章 高级线程处理

第22章 高级线程处理 22.1 同步概述 多线程我们常需要一些同步结构进行线程间通讯。同步结构可以分为三类:互斥锁一次只允许一个线程执行特定的活动或一段代码。主要目的是令线程访问共享的写状态而不互相影响。互斥锁包括 lock​、Mutex​ 和 SpinLock​。 2. 非互斥锁 实现…

DINO-X环境搭建推理测试

​引子 开放世界检测,前文也写OV-DINO(感兴趣的童鞋,请移步OV-DINO开放词检测环境安装与推理-CSDN博客)。这不,DINO系列又更新了。OK,那就让我们开始吧。 一、模型介绍 IDEA 开发了一个通用物体提示来支持无提示的开放世界检测,从而无需用户提供任何提示即可检测图像中…

一文说透汇编语言中的各种地址

本文讨论了学习汇编语言时一些易混淆的、关于地址的概念前言 由于笔者水平有限,随笔中难免有些许纰漏和错误,希望广大读者能指正。 一、各种地址之间的区分 笔者在刚开始学习汇编语言时,不是很能分清楚汇编地址、逻辑地址、物理地址、段地址、偏移地址、线性地址等概念,这对…

什么是自动化测试?为什么要做自动化测试?如何学习自动化测试?

自动化测试是指使用软件工具和脚本来执行测试任务的过程。它可以自动化执行测试用例、生成测试报告和进行结果分析。自动化测试可以减少人工测试的工作量,并提高测试的效率和准确性。它在软件开发过程中起到了重要的作用,可以帮助开发团队快速发现和修复软件中的缺陷,确保软…

o3 发布了,摔碎了码农的饭碗

大家好,我是汤师爷~ 在 2024 年底,OpenAI 发布了最新推理模型 o3。o3模型相当炸裂,在世界级编程比赛中拿下第 175 名,打败 99.9% 的参赛者。AI 写代码都赶上顶级程序员了,程序员是不是要失业?最近不少读者反馈,像 GitHub Copilot、Claude Sonnet 3.5、Cursor 等 AI 辅助…

Diary - 2025.01.06

回到正轨了,感觉今天好像不太摆了,但还是在小摸阿发现昨天日期写成 2024 了。明天计划来说应该是主要写题解了!!! 上午还有个模拟赛,但是说不定又是像之前那样拉个 USACO 来(?)。 仍记那时 USACO 金组没 ak,t3 被卡常了,6。 明天要写的题解:Luogu P11513 [ROIR 201…