# 警告：嵌入模型'text-embedding-3-small'的输入文本被截断为8192个令牌——嵌入质量可能下降

- **ID:** `llm/embedding-truncation-mismatch`
- **领域:** llm
- **类别:** data_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

嵌入模型有最大输入令牌限制（例如 text-embedding-3-small 为 8192）；长输入会被静默截断，丢失文本末尾的语义信息。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| openai>=1.0.0 | active | — | — |
| text-embedding-3-small | active | — | — |
| text-embedding-3-large | active | — | — |
| text-embedding-ada-002 | active | — | — |

## 解决方案

1. ```
   在发送到 API 之前，使用相同的分词器（例如 OpenAI 模型的 tiktoken）将输入文本预截断到模型的令牌限制，并显式记录截断。
   ```
2. ```
   使用滑动窗口或分块策略：将长文档分割成 max_tokens 的重叠块，分别嵌入每个块，并将所有嵌入连同元数据存储用于检索。
   ```
3. ```
   对于 RAG 管道，优先嵌入文本中语义最重要的部分（例如开头和关键部分），而不是依赖对末尾的自动截断。
   ```

## 无效尝试

- **** — The embedding API does not accept a max_tokens parameter; truncation is automatic and controlled by model limits (95% 失败率)
- **** — Averaging embeddings from different chunks loses positional and semantic relationships; not equivalent to a single embedding of the full text (70% 失败率)
- **** — Truncated embeddings miss critical information from the end of the text, leading to poor retrieval quality in RAG systems (85% 失败率)
