chunk RAG
时间: 2025-04-01 15:07:26 浏览: 32
### Late Chunking 和 RAG 中的 Chunk 数据处理
在检索增强生成(RAG, Retrieval-Augmented Generation)模型中,Chunk 的处理是一个核心环节。以下是关于如何利用 Late Chunking 技术以及结合其他方法来优化 RAG 模型中的数据处理方式。
#### 使用 Late Chunking 处理长上下文嵌入
Late Chunking 是一种无需额外训练即可应用于任意基于均值池化(mean pooling)的长上下文嵌入模型的技术[^1]。这种方法允许开发者直接分割输入序列并延迟到后期阶段再进行聚合操作,从而减少计算资源消耗的同时保持较高的性能表现。具体来说,在实际应用过程中可以按照如下方式进行设计:
对于超长文本片段,先将其划分为多个较小单元即 chunks;随后分别提取这些子部分对应的向量表示形式并通过简单的平均运算得到最终的整体表征结果作为后续检索步骤的基础素材之一。
#### 表格数据的支持与扩展
除了传统的纯文字材料外,现代信息系统还经常涉及结构化信息源——比如电子表格文件或者数据库记录等内容对象。针对这种情况下的特殊需求,《Advanced RAG 07》提出了新的解决方案:当面对包含复杂视觉元素(如图表)或者是高度格式化的数字列表时,则可考虑将整个表格视为单一实体单位存储起来形成所谓的 "big chunk"[^2] 。这意味着无论原始资料是以何种形态呈现出来—无论是图片模式还是标记语言描述版本(LaTeX)—都可以统一纳入系统框架之内加以管理分析。
#### 结合点击行为改进检索效果
为了进一步提升检索质量,可以通过监督学习的方法构建专门用于评估候选文档相关性的分类器。此过程涉及到收集用户交互日志,并从中提炼出有价值的信号用来指导算法调整方向。通过这种方式获得的知识能够帮助我们更好地理解哪些因素会影响人们的偏好选择倾向,进而针对性地修改原有机制使之更加贴合实际情况的需求特点[^3]。
```python
def process_chunks(texts):
"""
Process input texts into smaller chunks using late chunking technique.
Args:
texts (list): List of long context strings to be processed.
Returns:
list: A list containing mean pooled embeddings for each text.
"""
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
model = AutoModel.from_pretrained('bert-base-uncased')
all_embeddings = []
for text in texts:
inputs = tokenizer([text], truncation=True, padding=True, max_length=512, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
# Perform mean pooling over token-level representations
sentence_embedding = outputs.last_hidden_state.mean(dim=1).numpy()
all_embeddings.append(sentence_embedding)
return all_embeddings
```
上述代码展示了如何使用 BERT 预训练模型配合晚融合策略完成对大规模语料库的有效编码转换工作流程实例演示。
---
阅读全文
相关推荐

















