GPT 学习笔记-让GPT基于embeddings搜索来回答问题

1.什么是embedding search

嵌入(Embedding)是一种将离散的符号(如词语、字符或文档)映射到连续向量空间的表示方法。它将离散的符号转换为实数向量,从而使得计算机可以更好地处理和理解文本数据。

OPENAI提供内置的Embedding api,可以直接使用。

2.如果要求GPT回答关于不熟悉的话题的问题,可以采用以下方法:

  1. 搜索:利用一个文本库,搜索相关的文本段落,这些段落可能包含与感兴趣的问题或话题相关的信息。

  2. 提问:一旦从搜索步骤中检索到相关的文本段落,将它们插入到向GPT提问的消息中,并询问具体的问题。

这种方法利用了GPT现有的知识和能力,并通过参考文本提供的额外信息来回答关于不熟悉话题的问题。

Why search is better than fine-tuning

GPT可以通过两种方式学习知识:

  1. 通过模型权重(即,在训练集上对模型进行微调)
  2. 通过模型输入(即,将知识插入到输入信息中)

虽然微调可能感觉更自然一些——毕竟,通过训练数据来学习知识是GPT学习其他知识的方式——但我们通常不建议将微调作为向模型传授知识的方式。微调更适合教授专门的任务或风格,对于事实回忆来说可靠性较低。

打个比方,模型权重就像长期记忆。当你对模型进行微调时,就像在一个离考试还有一周的时候开始复习。当考试来临时,模型可能会忘记细节,或者错误地记住从未读取过的事实。

相反,消息输入就像短期记忆。当你将知识插入到消息中时,就像带着开放式笔记参加考试。有了笔记,模型更有可能得出正确的答案。

相对于微调,文本搜索的一个缺点是每个模型一次只能阅读最大数量的文本。搜索方法的一个限制是每个模型一次只能阅读有限量的文本。因此,提取并提供简明扼要、相关的文本段落对于有效地回答问题至关重要。

延续上面的比喻,可以将模型想象成一个学生,尽管可能有许多书籍可供参考,但一次只能看几页笔记。

因此,为了构建一个能够利用大量文本回答问题的系统,我们建议采用搜索-提问的方法。

搜索

文本可以通过多种方式进行搜索,例如:

  • 基于词汇的搜索
  • 基于图的搜索
  • 基于Embedding的搜索

后面的例子使用基于嵌入的搜索。嵌入是一种简单实现的方法,特别适用于问题,因为问题通常在词汇上与其答案不重叠。

将仅使用嵌入进行搜索作为构建自己系统的起点。更好的搜索系统可以结合多种搜索方法,以及诸如受欢迎程度、最新性、用户历史、与先前搜索结果的冗余度、点击率数据等特征。通过技术如HyDE,可以改进问答检索性能,其中问题首先被转化为假设的答案,然后再进行嵌入。同样地,GPT也可以通过自动将问题转化为一组关键词或搜索术语来潜在地改进搜索结果。

以上学习通过

openai-cookbook/examples/Question_answering_using_embeddings.ipynb

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用gpt-3.5-turbo api实现上下文关联回答的功能,需要先了解一下gpt-3.5-turbo api的调用方式和参数设置。 首先,我们需要在OpenAI平台上注册一个账号,然后创建一个gpt-3.5-turbo api的应用程序,并获取API密钥。 接下来,我们可以使用Python编程语言来调用gpt-3.5-turbo api,具体步骤如下: 1. 安装OpenAI的Python SDK,可以使用以下命令进行安装: ```python pip install openai ``` 2. 导入OpenAI的Python SDK,并设置API密钥: ```python import openai openai.api_key = "YOUR_API_KEY" ``` 3. 设置gpt-3.5-turbo api的参数,包括模型ID、上下文、提示文本等: ```python model_engine = "text-davinci-002" # 模型ID context = "I am a student." # 上下文 prompt = "What do you think about the student?" # 提示文本 ``` 4. 调用gpt-3.5-turbo api,获取回答结果: ```python response = openai.Completion.create( engine=model_engine, prompt=prompt, max_tokens=100, n=1, stop=None, temperature=0.5, context=context ) answer = response.choices[0].text.strip() ``` 在上面的代码中,我们使用了OpenAI的Python SDK提供的Completion.create()方法来调用gpt-3.5-turbo api,其中max_tokens参数表示生成的文本长度,n参数表示生成的文本数量,stop参数表示停止字符,temperature参数表示温度值,context参数表示上下文。 最后,我们可以将回答结果输出到屏幕上或者保存到本地文件中: ```python print(answer) ``` 以上就是使用gpt-3.5-turbo api实现上下文关联回答的简单步骤,需要注意的是,对于不同的应用场景,可能需要调整不同的参数来达到更好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值