现在我们又回到了光标处。
我们即将进入第五周。
我们要去第三天了。
欢迎来到第三天。
我们正在构建我们的专家问答系统以确保 Elm。
这将是使用我们创建的向量存储的 Rag 管道的长链一零实现
上次。
现在，您可能还记得上次我们制作矢量存储时，我们首先使用了 Huggingface 的编码器，
全迷你 Ml6 v2。
然后我们回去用几个更好的 OpenAI 模型再次做了一遍。
好吧，实际上我只是回去用原始模型重新运行它，因为我不知道哪个
您最终将使用的一个。
万一你坚持使用原来的、较弱的，那就是这样。
这就是我现在运行的。
你可以选择。
如果您愿意，您可以返回并执行该操作，或者坚持您所做的事情。
好的。
让我们从一些进口开始。
所以这里有很多长链进口。
这些都是有趣的。
所以这第一个是从郎链OpenAI导入聊天OpenAI。
这就是我提到的 LM 抽象。
聊天。
OpenAI 是您可以创建的 llms 之一。
它将响应来自 Cromer import Cromer 的调用。
上次我们有过这样的抽象。
呃，这与我们要处理的一些、一些、一些消息有关。
这些是我们已经研究过的嵌入模型。
我就提一下。
所以我将运行这些导入。
他们就在那里。
嗯，所以，呃，需要几秒钟。
有很多东西要进口。
呃，所以，所以在这里向您展示，我们有 OpenAI 导入聊天。
开放人工智能。
您也可以从 Lang Chain 购买。
呃，llama 导入 llama 我把 Lang chain 拼错了，不过还是填了。
呃，我可以说 from lang chain underscore anthropic import chat anthropic。
呃，如果你这样做，你可以简单地将聊天 OpenAI 替换为 Chat llama 或 Chat Anthropic，它就会
只是工作，这确实是长链的承诺，这些抽象是非常可交换的。
它们都会响应调用，这使您可以很容易地操纵事物，类似于
像轻量级LM这样的抽象方式可以做到这一点，但是对于长链来说，它是更重量级的。
这是一个完全不同的包，您必须安装和导入。
好的。
所以我会把它拿出来。
呃，希望你能明白。
现在我们要设置一些常量，然后我们就可以开始使用我们的抹布了。
现在，首先我们将创建嵌入对象，即 all mini lm l6 v2 对象。
我们还将使用嵌入对象连接到 Cromer。
你可以看到，正如我所说，我正在使用这个拥抱脸开源工具。
因此，如果您仍在使用 OpenAI 嵌入，则需要确保使用 OpenAI 嵌入对象
在这里，导入它，然后在这里使用它。
呃，不然如果你想用这个，那就用吧。
您可能必须返回并重新创建数据库。
使用相同的一致向量非常重要，因为如果数据库中有向量
这是 OpenAI 3000 维度向量，现在我们在这里使用这个，当我们
提出一个查询。
我们提出我们的问题。
我们把它变成一个向量。
如果它们是不同的型号，那么麻烦就会随之而来。
您将从拥抱的脸创建这样的 300 维向量。
您将尝试将其与 3000 个维度的向量（完全不同的向量）进行比较。
您还记得他们在图像中的样子有多么不同。
与您的矢量数据存储完全不同。
并且会出现错误。
由于尺寸不匹配，将会出现令人讨厌的、丑陋的堆栈跟踪。
你会回来问我，艾德，发生了什么事？
我想说的是，你有不同的矢量模型，所以不要这样做。
呃，确保它们是一致的。
那么让我们运行一下吧。
现在我们将创建嵌入。
我们已将数据存储加载到同一目录中。
该目录是矢量db。
你可以在那里看到它。
我们已经把它加载进去了。
我们还告诉了它我们正在使用的嵌入模型。
好的。
现在我们要创建两个大的长链对象：LM 和检索器。
他们俩都在那里。
让我们来创建它们。
所以你可以看到我通过向量存储（色度向量存储点）创建了检索器对象
作为猎犬。
这只是将其打包到一个检索器对象中，我们可以在该对象上调用点调用。
它会进行抹布查找。
如此简单，与聊天与聊天开放人工智能。
我们所要做的就是像这样创建它。
我们传递模型名称，我也传递一个叫做温度的东西，这使得
LM。
那么这个温度是多少呢？
我认为这个问题时常会出现，但我不确定我是否正确地解释过它。
现在让我花一分钟时间了解一下温度。
所以温度这个词你可能已经听说过很多次了，因为所有的 LMS 都采用
温度作为输入，它控制输出的变化量
来自模型。
它是一个参数，控制每次调用它时它的不同程度。
零温度意味着它应该是可预测的、确定性的、更高的温度
意味着答案应该有更多的多样性、更多的风味、更多的差异。
每次你打电话的时候。
现在有人形容这就是创造力，更高的温度才能产出更多的创意。
我认为这不太正确。
这并没有错，但我认为这有点误导。
所以我宁愿澄清一下，以便您能清楚地了解。
那么它实际上在做什么呢？
嗯，它实际上是在推理时控制，当你逐个生成每个令牌时，它是
与你如何选择下一个令牌有关。
模型，LM 实际上不会吐出下一个令牌，我想你知道，它实际上吐出什么
out 是所有可能的下一个标记的概率。
每个可能的下一个单词都有一定的概率，即使概率非常小。
但一切都会有所收获。
呃，通常当我松散地说时，我们会在我所指的内容时选择下一个标记
是你总是可以选择概率最高的令牌，即
模型说的是最有可能的下一个标记。
在温度为零的情况下，你所要做的就是选择概率最高的标记，
你每次都会选择那个和那个。
这就是所谓的零温度。
最可预测、最可靠、最确定的输出。
较高的温度意味着你偶尔会选择那些没有获得最高概率的代币，
但也许得到了第二顶或类似的东西。
事实上，在 OpenAI 的情况下，温度从 0 到 2 变化，温度为 1
意味着如果给定一个令牌的概率为 10%，那么您实际选择的概率为 110%
根据获得的概率对接下来出现的标记进行采样。
所以如果一个代币有 1% 的概率，那它真的不太可能。
仍然是百分之一。
如果温度为 1，您可能会选择那个。
因此，产品的种类更加丰富。
事实上，这可能意味着它更具创造性，但不一定。
这实际上只是意味着单词选择会有所不同，有时如果
温度足够高。
事实上，当温度达到两度时，你会得到相当奇怪的答案。
这就是温度的含义及其控制的意义。
并为此添加两个注释。
其中之一是，呃，我使用了诸如确定性和可再现之类的词。
这也不太正确，因为即使温度为零，输出也不一定
是可重复的。
因为有就有，有随机。
运行 llms 涉及随机数。
您可以执行称为设置随机种子的操作，这意味着随机数将是
每次都一样。
事实上，我们将在第 6 周到第 8 周内做到这一点。
当您进行测试并试图确保您确实做到了这一点时，这一点尤其重要
每次都得到相同的答案。
因此，我们稍后将设置随机种子，您将会看到这一点。
即使您设置了随机种子，仍然不能保证每次都相同。
因为实验室的前沿模型发生了变化，所以他们改变了模型。
而且因为性能优化意味着大量计算是并行发生的
以一种无法总是保证的方式，同样的事情会以完全相同的方式出现。
因此，没有什么能够完全保证可重现。
但是如果你的温度为零并且你做了这件事称为设置随机种子，那么你就是
很可能每次都会得到相同的答案。
我们将在课程稍后进行。
但现在，我们将温度设置为零，这对于 Rag 系统来说很常见，因为您
确实希望在可靠性方面有更强有力的保证，但通常也会看到温度
0.5 0.7 左右也是如此。
我提到温度与创造力并不相同。
如果您正在寻找您的模型更具创意并具有更高的创造力，那么正确的方法就是
也就是通过系统提示。
正确的方法是指导模型发挥创造力。
举例说明创造力对您意味着什么。
这就是创造力的意义所在。
如果你想让它给出不同的答案，最好的方法就是告诉它之前的答案
它说，我现在想要一些不同的东西。
这是最可靠的方法。
您可以使用温度来进行此类操作，但根据我的经验，它并不那么可靠。
如果您想从模型中获得特定行为，最好专注于提示。
好的，这是一个侧边栏，但我认为这是一个非常重要的侧边栏，所以我很高兴我们做到了。
让我们继续努力吧。
现在，随着创建两个抽象（检索器和 LM）的重要一步，我运行了它，它是
完毕。