refactor(m6): restructure non-code assets including filenames, environment setup, and minor fixes

This commit is contained in:
Annyfee
2026-01-03 16:38:19 +08:00
parent 69ce287cb5
commit ee95c05d13
5 changed files with 20 additions and 5 deletions
+14 -3
View File
@@ -5,7 +5,7 @@ RAG 概念|文本加载与分块 (Load & Split)|向量化 (Embedding)|向
--- ---
### 1. `load_and_split.py`(文本加载与分块) ### 1. `s01_load_and_split.py`(文本加载与分块)
加载本地 `.txt` 文档,并使用 `RecursiveCharacterTextSplitter` 将其智能分割成“知识卡片”。 加载本地 `.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 向量索引库将向量化后的文本片段构建为可检索的向量数据库,并持久化到本地。 使用 FAISS 向量索引库将向量化后的文本片段构建为可检索的向量数据库,并持久化到本地。
**掌握点** **掌握点**
@@ -35,7 +46,7 @@ RAG 概念|文本加载与分块 (Load & Split)|向量化 (Embedding)|向
--- ---
### 4. `rag_chain_full.py`LCEL 完整 RAG 链) ### 5. `s04_rag_chain_full.py`LCEL 完整 RAG 链)
使用 LCELLangChain 表达式语言)“手动组装”一个完整的 RAG 流程,实现“检索-增强-生成”的闭环。 使用 LCELLangChain 表达式语言)“手动组装”一个完整的 RAG 流程,实现“检索-增强-生成”的闭环。
**掌握点** **掌握点**
@@ -1,3 +1,4 @@
import config
import os import os
from langchain_community.document_loaders import TextLoader # 加载 from langchain_community.document_loaders import TextLoader # 加载
from langchain_text_splitters import RecursiveCharacterTextSplitter # 分割 from langchain_text_splitters import RecursiveCharacterTextSplitter # 分割
@@ -1,3 +1,4 @@
import config
from embeddings import get_embeddings from embeddings import get_embeddings
@@ -5,7 +6,7 @@ from embeddings import get_embeddings
print('---正在加载本地嵌入模型(bge-small-zh-v1.5)...---') print('---正在加载本地嵌入模型(bge-small-zh-v1.5)...---')
# 理论:有embedding的向量模型 # 理论:有embedding的向量模型
embeddings_model = get_embeddings("bge-small-zh-v1.5") embeddings_model = get_embeddings("BAAI/bge-small-zh-v1.5")
print('嵌入模型载入完毕') print('嵌入模型载入完毕')
# 演示:将文本转换为向量 # 演示:将文本转换为向量
@@ -1,5 +1,6 @@
# 仅负责: 切片 -> 向量化 -> 构建索引 -> 保存到磁盘 # 仅负责: 切片 -> 向量化 -> 构建索引 -> 保存到磁盘
# 运行一次即可,无需每次检索都运行 # 运行一次即可,无需每次检索都运行
import config
from embeddings import get_embeddings from embeddings import get_embeddings
import os import os
from langchain_community.document_loaders import TextLoader from langchain_community.document_loaders import TextLoader
@@ -9,6 +9,7 @@ from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough from langchain_core.runnables import RunnablePassthrough
# --- 模块A (离线操作) --- # --- 模块A (离线操作) ---
# 1. 加载&分割 2. 向量化 3. 存储 # 1. 加载&分割 2. 向量化 3. 存储
KNOWLEDGE_BASE_CONTENT = """ KNOWLEDGE_BASE_CONTENT = """
@@ -39,7 +40,7 @@ loader = TextLoader('knowledge_base.txt',encoding='utf8')
docs = loader.load() docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=250,chunk_overlap=40) text_splitter = RecursiveCharacterTextSplitter(chunk_size=250,chunk_overlap=40)
splits = text_splitter.split_documents(docs) 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) # 在内存中构建向量索引,但不持久化到本地文件 db = FAISS.from_documents(splits,embedding_model) # 在内存中构建向量索引,但不持久化到本地文件
print('---模块A(Indexing)完成---\n') print('---模块A(Indexing)完成---\n')