PDF 分块和嵌入
概述
Aspose.PDF PDF 分块和嵌入 支持将 PDF 文档拆分为语义文本块,并生成用于检索增强生成 (RAG) 管道、语义搜索和其他 AI 驱动场景的向量嵌入。
该 API 以 Document 的扩展方法形式提供两个入口点:
| 方法 |
描述 |
GetChunksAsync |
将 PDF 转换为 Markdown 并将其拆分为 DocumentChunk 对象。 |
IngestAsync |
完整管道:对文档进行分块、生成嵌入,并将记录 upsert 到向量存储中。 |
先决条件
- Aspose.PDF for .NET
Microsoft.Extensions.AI — 用于 IEmbeddingGenerator<string, Embedding<float>>
Microsoft.Extensions.VectorData — 用于 VectorStoreCollection<string, DocumentChunk>
- 嵌入提供程序(例如 OpenAI、Azure OpenAI 或任何
IEmbeddingGenerator 实现)
- 向量存储(例如 Azure AI Search、Qdrant、内存存储或任何
VectorStoreCollection 实现)
分块选项
通过 ChunkingOptions 配置分块行为:
var options = new Aspose.Pdf.AI.ChunkingOptions();
var customOptions = new Aspose.Pdf.AI.ChunkingOptions
{
MaxChunkSize = 512,
OverlapSize = 50
};
| 属性 |
默认值 |
范围 |
描述 |
MaxChunkSize |
1000 |
50–10 000 |
每个块的最大令牌数。 |
OverlapSize |
100 |
0–(MaxChunkSize−1) |
相邻块之间的重叠令牌数,用于保留边界处的上下文。 |
获取块
当您只需要文本块时,使用 GetChunksAsync——例如,检查块、进行后处理或将其传入自定义嵌入管道。
分块、嵌入和向量存储摄入
使用 IngestAsync 在单次调用中运行完整管道:文档被分块,为每个块生成嵌入,所有记录 upsert 到向量存储中。
由于该 API 基于 Microsoft.Extensions.AI 抽象构建,任何嵌入提供程序和任何向量存储都可以互换使用。
OpenAI
Azure OpenAI 和 Azure AI Search
DocumentChunk 参考
GetChunksAsync 返回或 IngestAsync 存储的每个 DocumentChunk 具有以下属性:
| 属性 |
类型 |
描述 |
Id |
string |
格式为 {sourceId}_chunk_{index} 的唯一标识符。 |
Index |
int |
该块在文档中从零开始的位置。 |
Content |
string |
块的文本内容。在向量存储中作为全文搜索数据存储。 |
Context |
string |
从文档中提取的结构上下文(例如标题路径)。帮助 RAG 管道了解块在文档中的来源位置。 |
Embedding |
ReadOnlyMemory<float>? |
向量嵌入,由 IngestAsync 填充。单独使用 GetChunksAsync 时为 null。 |
Metadata |
IDictionary<string, string> |
用于自定义元数据的可扩展键值存储。 |
向量存储架构
使用 DocumentChunk.GetVectorDefinition(dimensions) 获取与嵌入模型输出大小匹配的集合架构:
var definition = Aspose.Pdf.AI.DocumentChunk.GetVectorDefinition(dimensions: 1536);