diff --git a/m06_rag_basics/README.md b/m06_rag_basics/README.md index 1534b2d..acf0068 100644 --- a/m06_rag_basics/README.md +++ b/m06_rag_basics/README.md @@ -5,7 +5,7 @@ RAG 概念|文本加载与分块 (Load & Split)|向量化 (Embedding)|向 --- -### 1. `load_and_split.py`(文本加载与分块) +### 1. `s01_load_and_split.py`(文本加载与分块) 加载本地 `.txt` 文档,并使用 `RecursiveCharacterTextSplitter` 将其智能分割成“知识卡片”。 ✅ **掌握点**: @@ -25,7 +25,18 @@ RAG 概念|文本加载与分块 (Load & Split)|向量化 (Embedding)|向 --- -### 3. `build_index.py`(向量存储与索引构建) +### 3. `s02_embedding.py`(文本向量化) +演示如何加载本地 Embedding 模型,并将任意文本(知识卡片)转换为"语义向量"。 + +✅ **掌握点**: +- 使用 HuggingFaceEmbeddings 加载开源本地模型(如 BAAI/bge-small-zh-v1.5)。 +- 理解 Embedding(向量化)是 RAG 的"语义标签",用于实现"语义搜索"。 +- 如何调用 embed_query 将文本转换为向量(一串数字)。 + + +--- + +### 4. `s03_build_index.py`(向量存储与索引构建) 使用 FAISS 向量索引库将向量化后的文本片段构建为可检索的向量数据库,并持久化到本地。 ✅ **掌握点**: @@ -35,7 +46,7 @@ RAG 概念|文本加载与分块 (Load & Split)|向量化 (Embedding)|向 --- -### 4. `rag_chain_full.py`(LCEL 完整 RAG 链) +### 5. `s04_rag_chain_full.py`(LCEL 完整 RAG 链) 使用 LCEL(LangChain 表达式语言)“手动组装”一个完整的 RAG 流程,实现“检索-增强-生成”的闭环。 ✅ **掌握点**: diff --git a/m06_rag_basics/load_and_split.py b/m06_rag_basics/s01_load_and_split.py similarity index 99% rename from m06_rag_basics/load_and_split.py rename to m06_rag_basics/s01_load_and_split.py index c6b7159..fbfd93c 100644 --- a/m06_rag_basics/load_and_split.py +++ b/m06_rag_basics/s01_load_and_split.py @@ -1,3 +1,4 @@ +import config import os from langchain_community.document_loaders import TextLoader # 加载 from langchain_text_splitters import RecursiveCharacterTextSplitter # 分割 diff --git a/m06_rag_basics/embedding.py b/m06_rag_basics/s02_embedding.py similarity index 88% rename from m06_rag_basics/embedding.py rename to m06_rag_basics/s02_embedding.py index f0dae25..06152bf 100644 --- a/m06_rag_basics/embedding.py +++ b/m06_rag_basics/s02_embedding.py @@ -1,3 +1,4 @@ +import config from embeddings import get_embeddings @@ -5,7 +6,7 @@ from embeddings import get_embeddings print('---正在加载本地嵌入模型(bge-small-zh-v1.5)...---') # 理论:有embedding的向量模型 -embeddings_model = get_embeddings("bge-small-zh-v1.5") +embeddings_model = get_embeddings("BAAI/bge-small-zh-v1.5") print('嵌入模型载入完毕') # 演示:将文本转换为向量 diff --git a/m06_rag_basics/build_index.py b/m06_rag_basics/s03_build_index.py similarity index 99% rename from m06_rag_basics/build_index.py rename to m06_rag_basics/s03_build_index.py index 65c1310..16ca709 100644 --- a/m06_rag_basics/build_index.py +++ b/m06_rag_basics/s03_build_index.py @@ -1,5 +1,6 @@ # 仅负责: 切片 -> 向量化 -> 构建索引 -> 保存到磁盘 # 运行一次即可,无需每次检索都运行 +import config from embeddings import get_embeddings import os from langchain_community.document_loaders import TextLoader diff --git a/m06_rag_basics/rag_chain_full.py b/m06_rag_basics/s04_rag_chain_full.py similarity index 98% rename from m06_rag_basics/rag_chain_full.py rename to m06_rag_basics/s04_rag_chain_full.py index 24abdc9..0ab84c4 100644 --- a/m06_rag_basics/rag_chain_full.py +++ b/m06_rag_basics/s04_rag_chain_full.py @@ -9,6 +9,7 @@ from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough + # --- 模块A (离线操作) --- # 1. 加载&分割 2. 向量化 3. 存储 KNOWLEDGE_BASE_CONTENT = """ @@ -39,7 +40,7 @@ loader = TextLoader('knowledge_base.txt',encoding='utf8') docs = loader.load() text_splitter = RecursiveCharacterTextSplitter(chunk_size=250,chunk_overlap=40) splits = text_splitter.split_documents(docs) -embedding_model = get_embeddings("bge-small-zh-v1.5") +embedding_model = get_embeddings("BAAI/bge-small-zh-v1.5") db = FAISS.from_documents(splits,embedding_model) # 在内存中构建向量索引,但不持久化到本地文件 print('---模块A(Indexing)完成---\n')