md:优化原先readme数据
This commit is contained in:
+11
-11
@@ -15,23 +15,23 @@ RAG 概念|文本加载与分块 (Load & Split)|向量化 (Embedding)|向
|
||||
|
||||
---
|
||||
|
||||
### 2. `02_embedding.py`(文本向量化)
|
||||
演示如何加载本地 Embedding 模型,并将任意文本(知识卡片)转换为“语义向量”。
|
||||
### 2. 文本向量化功能
|
||||
项目使用根目录下的 `embeddings.py` 模块提供文本向量化功能,该模块封装了 `HuggingFaceEmbeddings`,支持自动下载和加载本地 Embedding 模型。
|
||||
|
||||
✅ **掌握点**:
|
||||
- 使用 `HuggingFaceEmbeddings` 加载开源本地模型(如 `BAAI/bge-small-zh-v1.5`)。
|
||||
- 理解 Embedding(向量化)是 RAG 的“语义标签”,用于实现“语义搜索”。
|
||||
- 如何调用 `embed_query` 将文本转换为向量(一串数字)。
|
||||
- 通过 `get_embeddings()` 函数获取向量化模型,默认使用 `BAAI/bge-small-zh-v1.5`。
|
||||
- 函数会自动下载模型到本地 `models` 目录,之后可离线使用。
|
||||
- 理解 Embedding(向量化)是 RAG 的"语义标签",用于实现"语义搜索"。
|
||||
|
||||
---
|
||||
|
||||
### 3. `03_build_index.py`(构建并存储索引)
|
||||
整合“加载”、“分块”和“向量化”三个步骤,构建 FAISS 向量索引库,并将其**持久化**保存到本地磁盘。
|
||||
### 3. `03_build_index.py`(向量存储与索引构建)
|
||||
使用 FAISS 向量索引库将向量化后的文本片段构建为可检索的向量数据库,并持久化到本地。
|
||||
|
||||
✅ **掌握点**:
|
||||
- 什么是 FAISS(轻量级、高性能的向量索引库)。
|
||||
- 如何使用 `FAISS.from_documents` 一键完成“批量向量化+构建索引”。
|
||||
- 如何使用 `db.save_local` 将索引保存到磁盘,实现**“离线索引”**。
|
||||
- 使用 `FAISS.from_documents` 构建向量索引库。
|
||||
- 通过 `save_local` 方法将向量索引持久化到本地文件系统(保存为"faiss_index"目录)。
|
||||
- 实现文本的完整处理流程:加载 -> 分割 -> 向量化 -> 索引构建 -> 持久化。
|
||||
|
||||
---
|
||||
|
||||
@@ -48,4 +48,4 @@ RAG 概念|文本加载与分块 (Load & Split)|向量化 (Embedding)|向
|
||||
---
|
||||
|
||||
💡 **建议**:
|
||||
跑通所有示例后,尝试用你自己的 `.txt` 文件替换 `knowledge_base.txt`,并调整 `chunk_size` 参数,观察分块结果和 RAG 问答效果的变化。
|
||||
跑通所有示例后,尝试用你自己的 `.txt` 文件替换项目中的 `knowledge_base.txt`,并调整 `chunk_size` 参数,观察分块结果和 RAG 问答效果的变化。
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
---
|
||||
|
||||
### 2. build_index.py (构建 Chroma 向量数据库)
|
||||
### 2. `00_build_index.py` (构建 Chroma 向量数据库)
|
||||
|
||||
将 `war_and_peace.txt` 加载、分块、向量化,并存入 Chroma 持久化向量数据库。
|
||||
|
||||
- ✅ 掌握点:
|
||||
- 使用 RecursiveCharacterTextSplitter 分割长文本(chunk_size=500, overlap=75)。
|
||||
- 调用 HuggingFaceEmbeddings(模型:BAAI/bge-small-en-v1.5)生成语义向量。
|
||||
- 通过根目录 `embeddings.py` 模块的 `get_embeddings()` 函数获取向量化模型(默认使用 BAAI/bge-small-en-v1.5)。
|
||||
- 通过 Chroma(persist_directory=...) 创建可持久化、支持增删改的向量库。
|
||||
- 自动分批插入(每批 ≤5000 条),规避 Chroma 单次写入上限限制。
|
||||
|
||||
@@ -38,8 +38,9 @@
|
||||
加载已持久化的 Chroma 向量数据库,用于后续检索。
|
||||
|
||||
- ✅ 掌握点:
|
||||
- 通过根目录 `embeddings.py` 模块的 `get_embeddings()` 函数加载向量化模型。
|
||||
- 使用 `Chroma(persist_directory="...")` 从磁盘加载已保存的向量库。
|
||||
- 无需重新向量化,实现“离线索引”快速启动。
|
||||
- 无需重新向量化,实现"离线索引"快速启动。
|
||||
- 获取 `db.as_retriever()` 作为后续 RAG 流程的输入。
|
||||
|
||||
- 依赖前提:
|
||||
@@ -52,9 +53,11 @@
|
||||
在召回结果上应用 Reranker 模型,提升上下文相关性。
|
||||
|
||||
- ✅ 掌握点:
|
||||
- 通过根目录 `embeddings.py` 模块的 `get_embeddings()` 函数加载向量化模型。
|
||||
- 使用 `BAAI/bge-reranker-base` Cross-Encoder 对检索结果进行重排序。
|
||||
- 通过 `ContextualCompressionRetriever` 封装为统一检索器。
|
||||
- 仅保留 Top-2 最相关文档,过滤语义噪声。
|
||||
- 通过 `ContextualCompressionRetriever` 和 `CrossEncoderReranker` 实现检索增强。
|
||||
- 理解`k`与`top_n`的作用
|
||||
- 保留 Top-6 最相关文档,过滤语义噪声。
|
||||
|
||||
- 依赖前提:
|
||||
- 必须存在 `chroma_db_war_and_peace_bge_small_en_v1.5` 目录。
|
||||
@@ -66,6 +69,7 @@
|
||||
将 RAG 链封装为 LangChain `@tool`,供 Agent 调用。
|
||||
|
||||
- ✅ 掌握点:
|
||||
- 通过根目录 `embeddings.py` 模块的 `get_embeddings()` 函数加载向量化模型。
|
||||
- 在启动时一次性构建 RAG 链(避免每次调用重复加载模型/数据库)。
|
||||
- 使用 `@tool` 装饰器注册 `search_war_and_peace(query)` 函数。
|
||||
- 支持与其他工具(如 `get_weather`)并列使用。
|
||||
@@ -80,6 +84,7 @@
|
||||
首次融合 LangChain 六大核心模块,构建带记忆、能自主决策的智能体。
|
||||
|
||||
- ✅ 掌握点:
|
||||
- 通过根目录 `embeddings.py` 模块的 `get_embeddings()` 函数加载向量化模型。
|
||||
- LLM:ChatOpenAI 作为推理引擎。
|
||||
- Prompt:含 MessagesPlaceholder("history") 的系统提示。
|
||||
- Chain:LCEL 构建的 RAG 链 + AgentExecutor。
|
||||
|
||||
Reference in New Issue
Block a user