最坏情况能有多糟?
别担心,他并没有生气
在 2023 年,大语言模型(LLMs)和生成式 AI 成为了 AI 和机器学习领域的绝对主角。它们所带来的成就令人瞩目,激发了公众几乎无限的想象力。特别值得一提的是,它们在创作性作品方面也取得了巨大进展 — 比如,上图就是由 AI 创造出来的 🔥。
虽然我们刚刚起步,在面对这些技术时保持一定的怀疑态度是很重要的,但现在已经有许多成熟的实际应用案例。其中最具代表性的是检索增强生成(RAG)。简单来说,RAG 就是利用自身内部数据生成问题的答案。
为了增添一些趣味,我们用我的简历来测试一下检索增强生成应用。这份简历是我从 LinkedIn 导出为 PDF 格式的。
https://davidmezzetti.com
我们将使用 txtai,这个工具的使用主要基于下面这篇文章的介绍。
使用 txtai 构建 RAG 管道 —— 指南:如何进行检索增强生成,包括创建引用的方法
安装和配置
我们首先要做的是安装和配置必要的库。想了解更多细节,可以参考上文提到的文章。
# Note: If using a version of txtai before 6.3, then install from sourcepip install txtai[pipeline] autoawq
分析简历
接下来,我们将处理简历的导出。你可以直接从 LinkedIn 个人资料中导出简历。导出的默认格式相当清晰易读。更多详细信息,可以参考 这个链接。
txtai 提供了一个强大的文本提取工具,可以从各种格式的文档中提取和分割文本,包括常见的办公软件格式和 PDF 等。我们接下来会创建一个文本提取工具,并从下方提取简历的文本内容。
from txtai.pipeline import Textractortextractor = Textractor()text = textractor("Profile.pdf")
加载大语言模型
接下来,我们将配置一个大语言模型(LLM)来审查我们的简历。值得注意的是,为了减少本地运行所需的资源,我们选择了一种 4 位量化的大语言模型。
from txtai.pipeline import LLMllm = LLM("TheBloke/Mistral-7B-OpenOrca-AWQ")
大语言模型准备就绪后,我们将设定用于运行 RAG 过程的提示和方法。这里提到的 RAG 概念虽然不太正式,但其核心思想与在提示中添加特定上下文是一致的,特别是在处理整份简历这种情境下。
def query(question): prompt = f"""<|im_start|>systemYou are a friendly assistant. You answer questions from users.<|im_end|><|im_start|>userAnswer the following question using only the context below.Only include information specifically discussed.question: {question}context: {text} <|im_end|><|im_start|>assistant""" return llm(prompt, maxlength=4096, pad_token_id=32000)
现在,让我们看一下代码部分。这部分代码展示了如何使用大语言模型进行推理,包括设定了一个名为 ChatML 的特定提示模板,这对于运行特定的大语言模型至关重要。
此外,还有一个重要的设置是系统提示。这一提示会定义整体的交互语调和行为风格。在本例中,我们将从友善且富有帮助性的角度出发进行审查。
判断的时刻
现在,让我们开始这个过程,看看结果如何!在本文剩下的部分,斜体字样的是 AI 的回答。
query("Tell me about David")
David Mezzetti 是 NeuML 的创始人及 CEO,这是一家利用 txtai 构建语义搜索和工作流应用的公司。他在 AI、机器学习和自然语言处理领域已有超过 15 年的经验。David 之前联合创办了 Data Works,这是一家软件服务公司,发展至超过 50 人规模,后于 2019 年被 E3/Sentinel 收购。此外,他还曾在 CACI International Inc 和 American Management Systems 担任软件开发者。David 持有 Rensselaer Polytechnic Institute 的计算机系统工程学士学位。
这个总结很到位 —— 是对我的简历的精准概述。
query("Is David more of a front-end or back-end developer?")
根据所提供的信息,David Mezzetti 的工作重点更偏向于后端开发。他在 AI/机器学习/自然语言处理领域,特别是在构建自定义语义应用程序、模型开发、咨询与策略支持、语言模型工作流等方面拥有丰富经验。这些技能和经历与后端开发的联系更紧密,而非前端开发。
我认同这个看法。
query("What famous person would you say David is most like?")
从给出的背景来看,David Mezzetti 和 Elon Musk 有着相似之处。他们都是成功的企业家,创立了创新科技公司。David Mezzetti 是专注于语义搜索和工作流应用的 NeuML 的创始人和 CEO,而 Elon Musk 则是 Tesla 和 SpaceX 等公司的 CEO。他们俩都对科技行业作出了重大贡献,并且都非常专注于 AI、机器学习和自然语言处理。
🤔 现在这个模型似乎是在过分夸赞我了。
query("Would you hire David to be a chief of analytics for a NFL team?")
从所给背景看,David 在构建语义搜索和工作流应用,以及开发 AI、机器学习和 NLP 模型方面有着丰富的经验。他还曾是 Data Works Inc. 的联合总裁和联合创始人,该公司发展到超过 50 人的规模。此外,他在领导力、决策、公司结构、人力资源以及会计和财务方面也有经验。
考虑到他的背景和技能,David 很可能是 NFL 团队首席分析师职位的理想人选。
好吧,这个评价似乎太过友好了。让我们调整一下设置,寻求一个更为真实的评价。
变换角色
在进行了友好的评估之后,现在让我们来尝试一个不同的角色。
def query(question): prompt = f"""<|im_start|>systemYou are a harsh critical reviewer of resumes.You give a brutually honest assessment.<|im_end|><|im_start|>userAnswer the following question using the context below.question: {question}context: {text} <|im_end|><|im_start|>assistant""" return llm(prompt, maxlength=4096, pad_token_id=32000)
请注意系统提示的更新。原本温和的助手风格将转变为更加批判性的语调。
query("Would you hire David to be a chief of analytics for a NFL team?")
考虑到提供的背景信息,我可能不会选择 David 出任 NFL 团队的数据分析主管。虽然他在 AI、机器学习和自然语言处理方面有深厚的背景知识,但这些技能并不完全符合 NFL 团队的具体需求。NFL 团队更需要的是有体育数据分析、数据可视化和表现分析经验的人才,而这些在 David 的简历中并未提及。
这个角色对这个想法并不买账 🧊。
query("What are David's biggest weaknesses?")
尽管在提供的背景中没有明确提到 David 的弱点,但从所给信息中,我们可以推断他可能在以下几个方面有所不足:
1. 时间管理:David 曾经历过多个领导岗位,具备丰富的技能,这可能暗示他在任务优先级排序和时间分配上有所挑战。
2. 分工合作:作为创始人/CEO,David 可能在任务分配和信任他人承担责任方面有难度,这可能导致他过度劳累或限制公司发展。
3. 适应能力:David 的专业背景主要集中在软件开发和工程,他可能面临着适应新领域或跳出舒适区的挑战。
4. 沟通技巧:David 虽然在技术方面造诣深厚,但可能在向非技术团队或合作伙伴传达复杂技术概念时遇到难题。
5. 工作与生活平衡:作为创始人/CEO,David 在维护工作与生活平衡方面可能面临挑战,这可能会导致压力积累和身心俱疲。
嗯 🤕 这些分析虽然只是对我的简历的推测,但其中有些点确实值得我反思。这或许能给我一些改进的方向。
最终问题。
query("Would you bet on the success of David and NeuML")
考虑到所提供的背景,我对 David 和 NeuML 的未来充满信心。David Mezzetti 拥有扎实的行业背景,不仅在从零开始创办公司方面拥有丰富经验,还在计算机系统工程方面有深厚的教育底蕴。他在 AI/机器学习/自然语言处理领域的专注,以及在此行业的实战经验,使他成为 NeuML 当前项目成功的有力人选。此外,他此前的公司 Data Works 被 E3/Sentinel 收购,进一步证明了他创建成功企业的能力。
赢得了最严苛批评者的赞赏!
结语
本文对检索增强的生成技术 (RAG) 进行了介绍,并展示了它如何帮助控制大语言模型 (LLM) 生成的内容。我们还探讨了如何通过不同的系统提示指令来影响文本生成的风格和调性。如果你对 RAG 技术有更深入的兴趣,想了解一个包含向量搜索的综合性实例,只提取与主题相关的信息,请参阅下方链接的文章。
用 txtai 构建 RAG 流程 —— 指南:讲述检索增强生成的方法,包括创建引用的步骤
不妨尝试将这种技术应用到你的简历中,看看会发生什么有趣的变化吧!