好吧，让我们来做一个实验。
现在我们进入实现文件夹。
这就是我们现在要生活的地方，因为我们需要改变的只是摄取方法或
答案的方法。
我们不需要更改任何其他内容，然后重新运行评估。
那么让我们进入摄取。
所以你经常要做的第一件事就是分块。
很好的老分块，那个大老黑客。
因此，我们目前正在将块大小划分为 1000 个字符的块大小。
我们尝试将其更改为 500。
让我们有更小的块。
呃，现在这意味着我们将拥有两倍的块。
现在，当我们这样做时，呃，值得记住的是，我们每次都会显示五个块。
在我看来，如果我们要拥有更小的块，那么只有我们表面上有更多的块才公平。
呃，否则整体上下文就更少了。
所以。
因此，如果我们去回答顶部的饼图，检索 k 就是 5。
这就是说，我们总是尝试收集您在此处看到的五份相关文件。
当我们调用检索器点调用时，K 为 5。
所以让我们把这个数字定为十。
因此，我们现在将显示 10 个 500 个字符的文档，而不是 5 个 1000 个字符的文档。
这看起来很公平。
呃，现在这两种情况都会用掉相同数量的上下文。
好的。
那挺好的。
让我们来测试一下。
好的。
所以我要打开一个新的终端。
我将进入第五周。
我要进入实施阶段。
然后我就去做。
您已经运行了摄取 dot pi。
请记住，这会重建向量。
呃，重新摄取。
所以之前我们有 400 之类的。
所以现在我们期望创建 8 或 900 个左右的向量并将其放入我们的数据存储中。
我们就这样吧。
970 个向量。
因为存在重叠，您预计会有超过一倍的重叠。
呃，所以我们就有了。
嗯，很多矢量，970 个。
现在让我们重新运行评估。
实际上，如果你的屏幕仍然在运行之前，你必须退出并创建
一个新的，因为我们已经重新生成了数据库。
因此，您需要启动一个新的 Gradio 应用程序。
那么我们现在就开始吧。
然后让我们运行一次评估吧。
所以我做 CD 向上，直到第五周，现在我做你已经运行了 evaluator.py。
它将调出我们的评估器。
我们所比较的 MRI 为 0.7298。
这就是我们必须击败的。
让我们按运行评估。
让我们看看我们得到了什么。
请击鼓。
我们确实做得更好。
更小的块意味着我们做得更好。
呃有趣。
好的。
让我们记下这一点。
一切都消失了，变黄了。
呃，我只是为了让我们专注于一件事。
两个都。
MRI 和所有三个指标均有所改善。
我们已经通过更小块的关键字覆盖率进入了绿色阶段。
让我们尝试更大的块。
但让我记下这一点。
所以对于 500，我保留了一个小注释标签。
所以你应该尝试把它写下来，这样我们就不会迷失方向。
因为如果我们要科学化，我们不妨也科学化。
好的。
现在让我们去制作更大的块，然后再试一次好吗。
所以我要结束它。
我现在要返回摄取，我要呃改变块大小。
我们要上升，我不会将 2000 翻倍，我会上升到一、六、六，
七。
你会想，为什么？
你为什么要这么做？
呃，为什么这么奇怪的数字？
因为我想忠实地填充我要回答的相同数量的上下文空间
点 pi 并说，让我们减到三，K 是三，因为一、六、六、七中的三将
达到相同的数字到，呃，到 10,000，这意味着对不起 5000。
呃，是吗？
是的。
三乘一六、六、六七 6667 就是 5000。
所以我们现在正在填充相同数量的上下文。
所以基本上它是三个更大的块与我们必须开始的五个块与十个块
块小得多。
所以我们在那里保持了一致性。
好的。
所以我们正在比较苹果和苹果。
好的。
我们需要重新运行 ingest CBD 实现 run ingest dot pi。
关了就走了。
让它做它该做的事。
我们预计现在呃 235 个向量会更少。
现在我们要转到上层目录到父目录。
我们将让您运行评估器 dot pi。
它将为我们带来一个新的运行界面。
我们会看看你必须下注什么。
你怎么认为。
好还是坏，好还是坏。
我们很快就会知道。
运行评价。
我们发现这很有趣。
怎么样？
你期待吗？
因为我不是。
它是。
我以为情况会更糟，但事实并非如此。
稍微好一点了。
那么我们来回顾一下。
因此，块大小为，嗯，呃，一六，六七，嗯，是，是呃，0.7475。
那是MRI，效果更好。
因此，块大小为 1667 时，较大的块大小优于块大小 1000，并且具有
500 的块大小比它们中的任何一个都要好。
这是最好的。
所以这里显然还有更多的实验要做。
通过继续试验，您可以获得更好的数字，并且尝试并保持这一点很重要
保持一切平等。
假设您想尝试在上下文窗口中保留大致相同数量的信息，
这样你就只改变一个参数。
如果您愿意在上下文窗口中显示更多内容，那么情况会有所改变。
好的。
嗯，这很有趣。
你应该做更多的实验。
这东西很有趣。
但现在我们将尝试不同类型的分块策略。
现在人们喜欢郎链的原因之一，我完全明白它是因为它配备了这么多的东西。
这是一个真正的，他们所谓的包含电池的框架，有很多东西
随着混合，其中之一是大量不同类型的分离器，可以将
以不同的方式增加你的块。
在我们的例子中，我们的知识库实际上是由 Markdown 文档组成的。
事实证明，你相信吗，有一个 Markdown 文本分割器是为
拆分 Markdown 文档？
实际上有两个。
有一个 Markdown 文本分割器可以解决这个问题，还有一个叫做 Markdown 标题文本
splitter 当您指定您希望它如何执行操作时。
但我们将选择一个简单的。
所以基本上我们找到了递归字符文本分割器。
我们将注释掉这一行。
相反，我们会说文本分割器是看那个。
它已经帮我们填好了。
但我认为你甚至不需要指定这一点。
我认为我们可以这样做，它会自己解决的。
就是这样就好了。
那么让我们看看我是否正确。
让我们运行 UV run ingest.py，呃，我们会看看它是否只运行并且只执行一些、一些文档
分裂。
它已经完成了 109 个向量。
我们去测试一下他们吧。
我应该说我要离开这个呃回答 py k 是 3 因为这些显然是
用更少的向量得到更大的块。
因此，只要粗略地尝试吃苹果，就会将检索 k 保持为 3。
现在我们将进入父目录并执行 uv run evaluator.py evaluator.py。
我们的评估框架就出来了。
我们将看看这个降价分割器是否做得更好。
这里是。
进行评估。
关了就走了。
我们得到 0.738 啊哈。
因此，当我们在 1000 个块上进行简单的字符分割时，它比我们原来的 MRR 效果更好。
但这比我们后续的任何一个都更糟糕。
因此，无论出于何种原因，使用 markdown splitter 效果并不好。
无论出于何种原因，我们都无法确切地知道发生了什么。
发生的情况是，当我们现在只关注标题时，我们的块太大了。
呃，所以，这就是，呃，这就是为什么我们看到，呃，性能受到影响。
但很高兴知道我们已经有了这个奇特的降价分割器，如果我们愿意的话。
好的。
你现在对实验感到厌倦了吗？
你玩够了吗？
嗯，我没有。
我才刚刚开始。
我。
还有一组实验要做。
这很有趣。
这是什么。
这就是工程学的全部内容。
这是关于实验的。
所以，呃，我已将所有内容重置回块大小 500。
递归字符文本分割器。
这是我们迄今为止最好的结果。
我们现在要更改嵌入模型，即编码器。
所以我们一直在使用all mini Ml6 v2。
因此，让我们导入 OpenAI 嵌入。
让我们进行嵌入。
是 OpenAI 嵌入。
我们将使用嵌入三个小文本的小文本作为模型。
我会对此发表评论。
请注意这里的一件小事。
如果您这样做，请确保在加载点 EMV 后执行此操作，以便您的 OpenAI 密钥
设置。
好的。
复制那个。
让我们过去回答点pi。
我们还必须更改此处的嵌入。
我们开始吧。
我已经这么做了。
我们不妨注释掉上面的行并确保我们正在导入。
是的，我们正在这里导入它。
出色的。
我们的状态很好。
这就是所需要的一切。
我们现在应该能够尝试使用 OpenAI 的嵌入模型。