0Pricing
AI Agents · 课时

加载器、分割器与向量存储

使用 DocumentLoaders 处理 PDF/HTML,使用 TextSplitters 进行分块,并使用 VectorStores 进行检索。

加载器、分割器与向量存储 是 CoddyKit 上的免费 AI Agents 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

LangChain 中 RAG 的三大支柱

  1. 文档加载器 — 将原始数据读入 Documents
  2. 文本分割器 — 将 Documents 切分成块
  3. 向量存储 — 将文本块转换为嵌入并建立索引

文档加载器

LangChain 提供了 100 多种加载器。示例:

from langchain_community.document_loaders import PyPDFLoader, WebBaseLoader, TextLoader

pdf_docs = PyPDFLoader('handbook.pdf').load()
web_docs = WebBaseLoader('https://example.com').load()
md_docs = TextLoader('README.md').load()

Document 对象

每个加载器都会返回一个 Documents 列表:

doc = pdf_docs[0]
print(doc.page_content)   # the text
print(doc.metadata)       # {'source': 'handbook.pdf', 'page': 1}

常用加载器

  • PyPDFLoader、文件非结构化加载器 — PDF
  • WebBaseLoader、SitemapLoader — 网页
  • NotionLoader、GoogleDriveLoader — 软件即服务
  • GitLoader — 代码仓库
  • SQL 数据库加载器 — 数据库行

文本分割器

将 Documents 转换为更小的文本块:

from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=800,
    chunk_overlap=100,
    separators=['\n\n', '\n', '. ', ' ']
)
chunks = splitter.split_documents(pdf_docs)

专用分割器

  • MarkdownHeaderTextSplitter — 按标题切分
  • RecursiveCharacterTextSplitter — 感知段落和句子边界
  • HTML 标题文本分割器 — 感知 HTML 结构
  • 特定语言的分割器(Python、Markdown、LaTeX)

感知令牌的切分

使用模型的令牌化器,进行精确到令牌的切分:

splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    encoding_name='cl100k_base',
    chunk_size=400,
    chunk_overlap=50
)

向量存储

将文本块转换为嵌入并存储:

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma

embeddings = OpenAIEmbeddings(model='text-embedding-3-small')
store = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory='./db'
)

Retrieval

retriever = store.as_retriever(search_kwargs={'k': 4})
results = retriever.invoke('What is our return policy?')
for d in results:
    print(d.page_content[:200])

持久化

如果为 Chroma 提供 persist_directory,它就会将数据持久化到磁盘。重新加载方法如下:

store = Chroma(persist_directory='./db', embedding_function=embeddings)

其他向量存储

接口相同,后端不同:

from langchain_community.vectorstores import FAISS, Pinecone, Qdrant, Weaviate

store = FAISS.from_documents(chunks, embeddings)
store.save_local('./faiss_db')

MultiVectorRetriever

为小文本块建立索引,但检索较大的父文本块:

from langchain.retrievers import MultiVectorRetriever
# Use the parent-child pattern automatically.

自查询检索器

让 LLM 根据自然语言生成元数据过滤条件:

from langchain.retrievers.self_query.base import SelfQueryRetriever
# 'What did Alice say in 2023?' -> filter={author: 'Alice', year: 2023}

检索器输出

LangChain 检索器会返回什么?

回顾

加载器 + 分割器 + 向量存储 = 完整的 RAG 技术栈。接下来将学习如何使用 LCEL 将它们组合成完整的链。

常见问题解答

「加载器、分割器与向量存储」课时是免费的吗?

是的 — 「加载器、分割器与向量存储」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「加载器、分割器与向量存储」这节课中我会学到什么?

使用 DocumentLoaders 处理 PDF/HTML,使用 TextSplitters 进行分块,并使用 VectorStores 进行检索。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「加载器、分割器与向量存储」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. LangChain 架构:模型、提示词、链
  2. 加载器、分割器与向量存储
  3. LCEL(LangChain 表达式语言)
  4. 端到端构建 RAG 链
← 返回 AI Agents