对一项技术应该了解到什么程度?

147 阅读4分钟

今人有个风气,喜欢说‘精通’/‘掌握’/‘了解’某项技术。但是稍有经验的都知道,人脑无法记住任何一个大型项目的所有细节,遑论还有数不清的只有实践中体会,暂时难以文本化的‘know-how’。 那么,到底应该了解到什么程度才能算专家呢?或者说,掌握了一个领域的哪些方面,才能cover住一个岗位要求的职责呢? 这里抛个砖:私以为有两个标准可供参考。一是知道一个逻辑流程里面的‘关键概念’,二是掌握理解相关的‘原型’概念。

什么是我所谓的‘关键概念’呢?我想从这两天看到的一则新闻谈起:AutoGpt决定放弃向量数据库,转而使用简单的numpy操作,因其所涉场景数据量远远没到非使用专业向量数据库的程度,反而增加了其开发成本。 我本人并不了解AutoGpt和向量数据库,只知道前者是通过一个精心设计的模式不断同gpt交谈,以解决用户提出的原始的,可能是模糊的很大的需求;又因为gpt的上下文长度限制,通过挑选对话记录中最相关的k个语句附于当前对话前的方式,实现长对话,而储存和查询这些语句就‘需要’向量数据库。 这里的‘关键概念’就是会影响你做决策的概念。 看网上的介绍文章,部署和运行autogpt需要: 安装autogpt->填上chatgpt的api key->注册一个在线向量数据库,比如pinecone,然后也填到autogpt配置里->运行,表述需求,静待完成。 新闻里记载的用原生numpy代替向量数据库,主要影响的是第三步,现在我们可以把向量数据库省掉了,果真如此吗? 根据我现在了解的信息,第三步的详细点的流程是:autogpt发送语句到数据库->数据库计算语句的嵌入向量(也是使用一些机器学习相关的算法)->数据库查询记录里与当前语句向量最接近的k个语句,返回给autogpt->数据库将当前语句及其向量存到记录中。 使用numpy代替在线的向量数据库,自然而然就会有一个疑问:如果我用本地numpy计算,是不是需要我配一台显卡?毕竟之前的逻辑里gpt、pinecone这些都是连接的别人服务器,本地只做一些逻辑处理? 这里,嵌入向量的具体计算方法,更确切地说,计算嵌入向量是不是对硬件有要求,就成了一个(对我来说未知的)‘关键概念’。为了cover这个问题,我需要了解算法是不是严重依赖于gpu的并行运算特性,以及在几千几万条语句时的空间占用。 但如果我的目的是了解保存上下文的效果,而且有充足的资源可供投入,那么嵌入向量法在不同任务下的相关性得分就是一个需要搞清的‘关键概念’。如果没有现成的,就得考虑是不是自己做一个标准集。相对的,算法的复杂度、运行效率就是一个次要问题。

‘原型’则是指整个项目在逻辑最简洁、最核心的等效替代。比如Agent,比如k-v数据库,它的作用是帮你知道这个项目的核心需求是什么,帮你看清代码里哪些是核心逻辑,哪些是优化trick,哪些是理解错了形成的‘特性’,以及为你在理清trick思路时指一个路。 还是用上面的例子,向量数据库的‘原型’就是一个k-v数据库,只要能计算key(向量值),根据条件取出value(语句),不论你是用的内存数据库、量子存储还是外包给肯尼亚人工服务,逻辑上都是等效的。但如果你用了一个看起来很炫酷的随机算法,效率提升了一万倍,但是计算的结果可能有比如说10%的偏差值,这时就需要结合实际场景去做决策了。 而AutoGpt的‘原型’则是人工智能界比较古老的Agent概念:感知环境、进行决策和执行动作的智能实体。从这里就可以得到结论:1 目前的方案:利用llm分解执行任务和向量记忆,虽然有的相对人类能力已经很高了,但大多数任务上仍不算一个可靠的agent,故而对autogpt开发者是主要问题 2 使用向量数据库还是numpy对用户或许有影响,但是从它的核心逻辑来说是没有影响的,因而对autogpt开发者是次要问题。

我对这些领域的了解、思考固然是肤浅的、不够深入的,但个人以为承认‘未知’,与‘已知’的人交流是使自己转到‘已知’的有效途径,希望诸位能够不吝自己的真知灼见,互相交流,共同成长。