RAG中的chunk以及评测方法
RAG中的chunk以及评测方法
https://www.pinecone.io/learn/chunking-strategies/
分块(chunking)是将大块文本分解成小段的过程。chunk的主要原因是尽量减少我们Embedding内容的噪音,所以为知识库中的文档找到最为合适的chunk大小,非常影响后续查找的准确性和相关性。
chunk的一些需要思考的问题
- 被索引的内容:长文档还是短内容。这会影响选择embedding model,从而也影响chunk的策略。每个embedding model在不同的大小的chunk上的表现不一样。例如 sentence-transformer在单个句子上表现很好,text-embedt-ada-002这样的模型在包含256或512个tokens的块上表现得更好。
- 用户的输入的prompt的长度也是需要考虑的内容。
- 大模型tokens上限也会影响chunk的大小。
chunk的几种方法
如下介绍的方法在当前成熟的框架中几乎都已经支持了,例如langchain、llamaindex等。
- 固定大小是指确定tokens的数量,以及它们之间是否有重叠(有一些重叠能够保留部分上下文语义。)大部分的chunk都是采