OpenAI DevDay 后发布了几个视频,有两个视频非常值得一看,里面提供了从产品体验优化,到探索模型性能,到测试的具体抄作业式的实操方法,结合自己的理解梳理成了一套完整实施 AI Native 产品的逻辑。都 3 天了,这观看次数实在是太少了,视频链接在文末
失控是一种很糟糕的用户体验,但模型的本质决定了模型具有不确定性。基于模型的产品跟原来的产品差别是,原来的产品交互是可以重复的,并精确的按照预先设计的路径发生,用户对产品是可控的。但是,随着交互模式从点触交互逻辑到自然语言交互逻辑的改变,用户与产品的交互变得不可控了,所以,良好的 AI 产品用户体验,第一件事情是:控制模型的不确定性保证人能干预系统并给系统反馈,譬如提供回答的好 、坏、重新生成等反馈动作,这些反馈使得系统在反馈中进行迭代,有一种越用越好的感觉,可能最后都不是同一个东西了。管理用户预期,AI 并不是万能的 ,能做什么不能做什么跟用户交代清楚,能很好的管理好用户的预期,ChatGPT在输入框下方有一句:ChatGPT can make mistakes. Consider checking important information.GPTs 本身是 ChatGPT 的分身,从能力上没什么区别 ,但是每一个创建者从给 GPTs 取名开始,就在管理用户的预期。引导用户进行人机协作,譬如引导用户对问题进行深入探讨,扩展其他相关问题等。这三种方式通过管理模型如何与用户交互,如何响应用户来主动优化用户体验,都能增强用户对 AI 产品的在交互与响应上的可控性。另外一个重要的可控性是,产品应在安全层面对 LLMs 进行约束。输入方面的安全,应防止有害和不需要的内容进入产品。譬如:用户输入不符合价值观的的Prompt应该引导用户进行安全的输入。当然直接拒绝也是一种办法,但引导安全输入是一种更好的体验。输出方面的安全性,应该保证输出的内容合规,尤其是有监管的地区。产品本身的安全性,应该有数据、算法、系统稳定性方面的安全措施。表现得一致性是获得用户信任的基础,但模型是预训练的,幻觉必定存在。一致性(Consistency)通常指的是模型在回答问题或进行对话时显示出来的逻辑和事实上的一致性,以及对话和行为上的一致性。事实一致性:模型在不同时间给出的答案应该在事实上保持一致。例如,对于历史事件的日期、科学事实或通用知识,模型的答案不应该自相矛盾。逻辑一致性:模型的回答应该在逻辑上是一致的,即它们应该符合逻辑推理的原则,不包含内在的逻辑错误或自相矛盾的论点。对话一致性:在对话场景中,模型的回答应该与之前的对话内容保持一致,不应出现忘记先前对话内容或随意更改话题的情况。行为一致性:当模型被用来模拟某种特定的角色或个性时,它的回答和行为应该与该角色或个性保持一致。一致性对于 LLMs 的可靠性和用户的信任至关重要,缺乏一致性可能会导致用户混淆,甚至质疑模型的可用性。因此,开发LLMs时,通常会采取各种技术和方法来提高模型的一致性。(来自ChatGPT)AI 产品通常通过知识库 、工具将模型与真实世界的知识相结合,为模型提供有事实依据,来减少模型的一致性问题。相当于告诉模型,不知道不要乱说,要根据我提供的事实依据来说,这些事实依据可以来自文件、检索 、API、搜索引擎、数据库都可以。
在系统里的流程大概是这样的:用户查询过来,先通过自己的服务器查询到相关的事实依据,将用户的查询、事实依据以及Prompt一起发送给 OpenAI 的 API ,然后 API 根据事实依据来回答用户的查询,整个这个 过程是一个 RAG 检索增强生成(Retrieval-Augmented Generation)的实施过程。
- 用户(User)提出一个问题(Question),例如:"What is the population of Canada?"
- 这个问题首先被送到一个知识库(Knowledge Base),这个知识库包含了许多文档(Documents),这些文档已经被转换成嵌入向量(Embeddings)以方便检索。
- 知识库根据问题的内容,检索相关的信息(Content),在这个例子中检索到的内容是:“The current population of Canada is 39,566,248 as of Thursday, October 19, 2023, based on Worldometer elaboration of the latest United Nations data.”
- 接着,系统将检索到的内容与用户的提示结合起来(Combine content with prompt),准备生成一个回答。
- 聊天完成(Chat Completion)模块生成一个回答,它可能会像这样说:“Of course I can help you with that! There are 39,566,248 people in Canada as of October 19th, 2023.” 这个回答结合了用户的原始问题和从知识库检索到的内容。
展示了通过逐步添加这些优化措施,让 RAG 系统在准确性上显著提升。
- Retrieval with cosine similarity: 首先使用余弦相似度进行检索时,系统的准确率为45%。
- HyDE retrieval, FT Embeddings, Chunk/embedding experiments: 接着,引入HyDE检索、使用微调(Fine-Tuned, FT)的嵌入向量以及进行块/嵌入实验后,准确率提升到65%。
- Reranking, Classification step: 然后,通过重排序和分类步骤进一步优化,准确率提高至85%。
- Prompt engineering, Tool use, Query expansion: 最终,结合提示工程、工具使用以及查询扩展,准确率高达98%。
控制 LLMs 固有的概率性质通常很困难,尤其作为应用层开发者权限都没有更是不可能的,但在 DevDay 后 OpenAI 提供了两个工具给开发者 ,来从模型层面来解决一致性问题:JSON 模式(JSON schema)允许你强制模型输出JSON, JOSN 就成了模型与现有系统的沟通语言,因为模型跟现有系统都懂 JSON。模型一致性问题,本质上是因为模型预测的是下一个词的概率,影响概率的主要原因有三个:Temperature / top_p、seed、system_fingerprint。原来可以开发者是可以控制,Temperature / top_p 这两个参数,DavDAY 后开放了种子参数(seed),使开发者可以获得明显更具可重复性的输出(Reproducible outputs),便于调试与需要相对固定输出的场景。微调过程是继续在一个更小的、特定领域的数据集上进行,目的是为了优化模型以更好地执行某个特定任务。如果通过复杂的提示工程能解决问题,那么微调大概率能帮你提高完成这些任务的性能,也能减少任务过程的 token 消耗。反过来,如果提示工程不起作用,微调可能不适合你的场景。强调模型中已有的知识 (Emphasizing knowledge that already exists in the model): 如果模型已经预训练了某些知识,微调可以帮助强调这些方面以提高特定任务的性能。譬如在医疗、法律或者其他专业领域中回答问题或进行其他任务。也常用于将大模型的专业知识提炼到小模型中(通过模型蒸馏(model distillation)技术实现),即将大模型的知识转移给小模型,同时保持性能。定制回应的结构或语调 (Customizing the structure or tone of responses): 微调可以用来调整模型生成的文本,以符合特定的风格或格式要求。教导模型非常复杂的指令 (Teaching a model very complex instructions): 当任务需要模型遵循非常复杂的指令时,微调是一种有效的方法。向基础模型中添加新知识 (Adding new knowledge to the base model): 微调通常不涉及引入模型未见过的全新信息或知识。快速迭代新用例 (Quickly iterating on a new use-case): 微调过程可能比较慢且消耗资源多,不适合快速试错和迭代新的应用场景。对AI 产品的性能进行评估,以确定其在特定任务上的效率、准确性、可靠性等。一般是通过足够多的输入与输入来测试,最终由人或另一个语言模型对 AI 生成的每个回答进行评估。有一些现成的测试框架,譬如:OpenAI EvalsGPT-4 代表模型能力上限,可以用来评估其他模型的能力。好处是利用语言模型自动处理那些相对简单或标准化的任务,人类的专业判断留给那些需要更深入分析的特殊情况,这样提高了评估过程的效率,也会提高整体的评估质量,流程如下:
提出一个问题,例如:“What weighs more: 1 pound of feathers or 1 pound of bricks?”(一磅羽毛和一磅砖头哪个更重?)AI 模型给出了错误的回答:“1 pound of bricks weighs more”(一磅砖头更重),而理想的回答应该是“They weigh the same”(它们重量相同),因为都是一磅。接着,使用另一个提示,要求模型评估刚才的回答,即:比较前面模型生成的回答和专家的回答。GPT: 使用GPT模型或其他类似的AI模型来完成这一评估。AI模型给出评估结果:“There is disagreement between the submitted and expert answers”(提交的答案与专家的答案不一致)。RAG 的评估分为两个主要部分:生成(Generation)和检索(Retrieval)每部分都要评估,高质量的输出不仅要与问题相关、事实上准确,还需要基于检索到的、与问题紧密相关的信息。
在生成部分 Generation,衡量大型语言模型(LLM)回答问题的能力。:- Faithfulness: 生成答案的事实准确性。
- Answer relevancy: 生成答案与问题的相关性。
在检索部分 Retrieval,评估检索到的内容与问题的相关性:- Context precision: 检索上下文的信噪比。
- Context recall: 检索系统能否检索到回答问题所需的所有相关信息。
好的评估(Good Evals)等于以下三个因素的组合:- Correlated with outcomes - 与结果相关性:这意味着好的评估指标或标准应该与我们关心的结果紧密相关,即评估的结果能够反映模型在实际应用中的表现。
- High coverage - 高覆盖率:指评估应该涵盖模型所有重要方面的性能,而不仅仅是几个局部或特定的功能。
- Scalable to compute - 计算的可扩展性:意味着评估的过程应该能够随着模型的扩展而有效地执行,不会因为模型变大或复杂而变得难以实施。
跟边际成本为 0 的传统应用相比,AI 应用每次请求要认真考虑 token 成本,看帐算不算得过来 。尤其当用户规模起来了,响应延迟与成本的问题就比较突出了。
语义缓存减少 API 请求次数,来降低成本与提高响应速度。
请求:“When was GPT-4 released?”(GPT-4何时发布的?)服务器处理这个请求,并将结果:“March 14, 2023”(2023年3月14日)回传给语义缓存。语义缓存保存这个回答以备后续使用,并将答案通过API发送给用户。请求:“GPT-4 release date?”(GPT-4的发布日期?)尽管这个问题的措辞与第一个不同,语义缓存能够理解两个问题的语义是一致的,它们都在询问同一个具体的信息。由于这个信息已经被保存在缓存中,语义缓存直接返回之前保存的答案,无需再次从 API 查询,减少 API 请求次数,且节省时间。用 GPT-4 来输出 3.5 的训练数据进行微调,以获得跟 GPT-4 接近表现的 GPT-3.5-Turbo,尽量保证效果的同时,降低单价。
https://www.youtube.com/watch?v=ahnGLM-RC1Yhttps://www.youtube.com/watch?v=XGJNo8TpuVA
官网可访问 AI 产品榜 50 + 榜单数据表格,后续月份榜单也会在官网更新,记住就行。
跟一群AI投资人、AI创业者、大厂产品经理、大厂技术 一起交流 AI产品和数据