diff --git "a/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/1. \347\256\200\344\273\213 Introduction.md" "b/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/1. \347\256\200\344\273\213 Introduction.md" index f3f0ffb3..b81e8c7a 100644 --- "a/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/1. \347\256\200\344\273\213 Introduction.md" +++ "b/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/1. \347\256\200\344\273\213 Introduction.md" @@ -3,22 +3,38 @@ 本课程深入探讨如何利用检索增强生成(Retrieval-Augmented Generation, RAG)技术,使大型语言模型(Large Language Models, LLMs)能够在用户自有数据上回答问题。本课程的目标是介绍构建和实现高质量RAG系统所需的关键技术和评估框架。 ## 一、背景 -在本课程中,我们首先探讨了RAG技术的重要性,它通过有效的检索技术为LLM提供高度相关的上下文信息,从而生成准确的答案。此外,我们还将介绍如何通过有效的评估框架,在初始开发和部署后维护期间,高效地迭代和改进RAG系统。 + +在本课程中,我们首先探讨了RAG技术的重要性。RAG通过有效的检索技术为LLM提供高度相关的上下文信息,从而生成准确的答案。此外,我们还将介绍如何通过有效的评估框架,在初始开发和部署后维护期间,高效地迭代和改进RAG系统。 ## 二、课程内容概览 + - **高级检索方法**:介绍了两种先进的检索方法——句子窗口检索和自动合并检索,这些方法比传统方法能够为LLM提供更好的上下文信息。 + - **句子窗口检索**:不仅检索最相关的句子,还检索文档中该句子前后的句子窗口。 + - **自动合并检索**:将文档组织成树状结构,当子节点被识别为相关时,提供父节点的完整文本作为上下文。 + - **评估指标**:解释了如何使用三个评估指标(上下文相关性、根据性和答案相关性)来评估LLM问答系统的性能。 + - **上下文相关性**:衡量检索到的文本块与用户问题的相关程度。 + - **根据性**:评估生成的答案是否基于可靠的信息源。 + - **答案相关性**:判断生成的答案是否与用户问题直接相关。 + - **实践应用**:本课程后半部分将提供实践操作,教授如何使用这些检索方法和评估方法迭代优化RAG系统,并展示如何使用系统化的实验跟踪来建立基线并快速改进。 ## 三、专家指导 + - **Jerry Liu**:作为LlamaIndex的联合创始人兼CEO,Jerry将分享他在社交媒体上关于RAG实践进化的见解。 - **Anupam Datta**:作为TruEra的联合创始人兼首席科学家,Anupam将利用他在可信AI领域以及如何监控、评估和优化AI应用效果的十多年研究经验,为课程提供深入洞察。 ## 四、课程亮点 + - **句子窗口检索和自动合并检索**:这两种方法通过提供更连贯的文本块,优化了LLM的上下文理解能力。 - **RAG三元组评估体系**:介绍了一套有效的度量标准来评估RAG系统在检索、理解和生成答案方面的性能。 - **实践操作**:课程将通过代码演示和实际案例,让学员亲自实践这些高级检索和评估方法。 -## 五、致谢 -感谢所有参与本课程创建的人员,包括LlamaIndex团队的Logan Markehwich,TruEra团队的Shayak Sen、Joshua Reini、Barbara Lewis,以及DeepLearning.ai团队的Eddie Shyu和Dialla Ezzeddine。 +## 五、受众与预期成果 + +- **适合人群**:本课程适合数据科学家、机器学习工程师和AI研究人员,要求学员具备基本的机器学习和自然语言处理知识。 +- **预期成果**:完成课程后,学员将能够设计和实施高效的RAG系统,优化LLM的上下文检索能力,并有效评估和改进这些系统的性能。 +## 六、致谢 + +感谢所有参与本课程创建的人员,包括LlamaIndex团队的Logan Markehwich,TruEra团队的Shayak Sen、Joshua Reini、Barbara Lewis,以及DeepLearning.ai团队的Eddie Shyu和Dialla Ezzeddine。 diff --git "a/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/2.\351\253\230\347\272\247RAG\347\256\241\351\201\223 Advanced RAG Pipeline.ipynb" "b/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/2.\351\253\230\347\272\247RAG\347\256\241\351\201\223 Advanced RAG Pipeline.ipynb" index b3a1e7d9..9a80bce6 100644 --- "a/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/2.\351\253\230\347\272\247RAG\347\256\241\351\201\223 Advanced RAG Pipeline.ipynb" +++ "b/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/2.\351\253\230\347\272\247RAG\347\256\241\351\201\223 Advanced RAG Pipeline.ipynb" @@ -8,6 +8,18 @@ "# 第二章 高级的RAG管道" ] }, + { + "cell_type": "markdown", + "id": "f206ace2", + "metadata": {}, + "source": [ + "接下来,导入该课程需要的工具包utils,然后设置openai的API密钥。\n", + "有三种方式设置API密钥:\n", + "1. 在环境变量中设置`OPENAI_API_KEY`,然后使用utils直接获取;\n", + "2. 显式设置api_key,直接赋值给openai.api_key;\n", + "3. 如果没有openai的密钥的话,也可以选择使用第三方服务,修改openai.api_base即可;" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -32,10 +44,19 @@ ], "source": [ "import utils\n", + "# 导入自定义的工具包\n", "\n", "import os\n", "import openai\n", - "openai.api_key = utils.get_openai_api_key()" + "# openai.api_key = utils.get_openai_api_key()\n", + "# 设置OpenAI的API密钥,从环境变量中获取\n", + "\n", + "# openai.api_key = \"\" \n", + "# 或者这里填入你的OpenAI API密钥\n", + "\n", + "# openai.api_key = \"sk- \" \n", + "# openai.api_base = \" \"\n", + "# 或者自定义API密钥和API基础地址,可适用第三方API服务\n" ] }, { @@ -169,6 +190,7 @@ "source": [ "from llama_index import Document\n", "\n", + "# 将documents中的内容合并成一个大文档,而不是每一页都是一个文档\n", "document = Document(text=\"\\n\\n\".join([doc.text for doc in documents]))\n", "document_en = Document(text=\"\\n\\n\".join([doc.text for doc in documents_en]))" ] @@ -212,7 +234,15 @@ "from llama_index import ServiceContext\n", "from llama_index.llms import OpenAI\n", "\n", + "# 设置使用的大模型\n", + "# \"gpt-3.5-turbo\"是模型的名称\n", + "# temperature是温度,用来控制文本生成过程中的多样性\n", "llm = OpenAI(model=\"gpt-3.5-turbo\", temperature=0.1)\n", + "\n", + "# 设置embedding模型\n", + "# 这里是在本地使用BAAI/bge-small-zh-v1.5\n", + "# document的所有的内容会索引到sentence index对象中\n", + "# 国内使用可以切换huggingface镜像站\n", "service_context = ServiceContext.from_defaults(\n", " llm=llm, embed_model=\"local:BAAI/bge-small-zh-v1.5\"\n", ")\n", @@ -315,7 +345,7 @@ "id": "e50a1ac5", "metadata": {}, "source": [ - "## 二、使用Trulens进行评测" + "## 二、使用TruLens进行评测" ] }, { @@ -474,6 +504,25 @@ "通过调用 reset_database() 方法重置 Trulens 数据库。清空之前的记录和反馈数据。" ] }, + { + "cell_type": "markdown", + "id": "fb0cd6ea", + "metadata": {}, + "source": [ + "首先需要安装本课程中需要的评估框架,如果已经安装就可以跳过这一步骤。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6767db6c", + "metadata": {}, + "outputs": [], + "source": [ + "# requirements\n", + "# pip install trulens_eval" + ] + }, { "cell_type": "code", "execution_count": 18, @@ -493,10 +542,16 @@ } ], "source": [ + "# 导入Tru类\n", "from trulens_eval import Tru\n", + "\n", + "\n", + "# 实例化Tru类\n", "tru = Tru()\n", "\n", - "tru.reset_database()" + "# 重置数据库\n", + "# 数据库之后会用来存储问题、中间召回结果、答案以及评估结果\n", + "tru.reset_database()\n" ] }, { @@ -989,6 +1044,8 @@ "source": [ "from utils import get_sentence_window_query_engine\n", "\n", + "# 根据sentence_index对象创建一个搜索引擎\n", + "# 之后会被用于在RAG应用中进行召回\n", "sentence_window_engine = get_sentence_window_query_engine(sentence_index)" ] }, diff --git "a/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/3.\350\257\204\344\274\260RAG\345\272\224\347\224\250\347\232\204\346\214\207\346\240\207 RAG Traid of Metrics.ipynb" "b/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/3.\350\257\204\344\274\260RAG\345\272\224\347\224\250\347\232\204\346\214\207\346\240\207 RAG Traid of Metrics.ipynb" index 3b0f4749..ef410e48 100644 --- "a/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/3.\350\257\204\344\274\260RAG\345\272\224\347\224\250\347\232\204\346\214\207\346\240\207 RAG Traid of Metrics.ipynb" +++ "b/content/\351\200\211\344\277\256-Building and Evaluating Advanced RAG Applications/3.\350\257\204\344\274\260RAG\345\272\224\347\224\250\347\232\204\346\214\207\346\240\207 RAG Traid of Metrics.ipynb" @@ -384,11 +384,6 @@ "output_en.metadata" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, { "cell_type": "markdown", "metadata": {},