您的功能请求是否与问题相关?请描述。
在某种程度上,我正在尝试为我们的文档构建一个基于RAG的助手。我们的文档代码量很大(因为我们开发了一个JDK发行版)。我真的希望代码片段只出现在文本的上下文中——单独存在时,它们是无用的。
描述您希望实现的解决方案
我认为完美的解决方案是让非结构化识别代码片段并有设置将它们放入上下文。例如,代码应该始终在前后至少包含一个段落。
描述您考虑过的替代方案
我尝试过使用max_characters
参数以及其他一些参数进行实验,但最终我总是会得到没有上下文的撕裂代码块。另一个替代方案可能是,通过标题干净地分割文档,不关心章节大小(显然代码可以很大)
5条答案
按热度按时间1aaf6o9v1#
@asm0dey 你正在从哪种源文件格式进行分区?HTML?Markdown?还是其他格式?
我认为第一个先决条件是在分区过程中识别和区分代码块,这取决于它们在每个特定文档格式中是如何被识别的。
mqxuamgl2#
对不起,忘了提到这是markdown格式!
mfpqipee3#
@asm0dey 经过一段时间的思考,我不认为
unstructured
能够提供你所需要的内容。特别是,代码片段将被解析为一个独立的段落,因此将Map到一个独立的
CodeSnippet
元素。如果你想要“分组”叙述性文本(即代码片段前后的段落),你需要在后处理步骤中进行,或许可以作为自定义分块器。
你还需要确定这些块是什么,因为它不再是一个叙述性文本元素,也不再是一个
CodeSnippet
元素。也许CompositeElement
对你来说会有所帮助。总之,在Markdown/HTML中识别
CodeSnippet
元素是朝着正确方向迈出的一步。50few1ms4#
是的,而且也许将其设为原子操作是有意义的,对吧?因为将代码片段拆分从来都没有意义。
u0njafvf5#
嗯,是的,但语义和文档结构并不总是相互关联的。此外,如果你正在进行分块,而片段的大小大于指定的块大小,那么它将被分割。
但一般来说,在HTML分区格式(包括Markdown)中,我希望看到片段作为一个单独的
<pre>
元素,没有嵌入的块元素(<p>
或<div>
等),这样它自然地会作为单个文档元素进行分区。