最近在跑一个开源RAG项目的时候,拉下来后直接跑发现在通过openai client调用本地ollama的过程中会出现404的问题。通过网上资料的整理发现ollama的openai api的兼容没有覆盖到embeding模型,因此在调用的时候会报这个错(ollama的embeding api是http://localhost:11434/api/embeddings, openai的base url一般是http://localhost:11434/v1/)。一般来说解决思路就是看下ollama最新的更新是否涵盖了这部分,如果涵盖了,则直接升级ollama,如果没有涵盖,就需要自己实现本地ollama的embedding。
幸运的是,当我将ollama进行升级之后,这个问题得到了解决。这也意味着我不需要再去做开发。
升级前:
升级后:
但本着探索的心态,我还是想尝试一下如果要新增一种embeding, 要怎么做呢?对于使用本地部署的ollama做embedding来说,我需要实现一个embedding类,这个embedding类的执行逻辑主要是构造一个http请求来请求本地的ollama(也可以使用ollama的sdk来调用)。
对于使用python编程的同学来说,这可能是比较快速可以完成的一件事。对于有一定编程基础的但对python不熟的同学来说,可能需要稍微花费一点时间。而这部分工作又可以看做是简单的重复性工作(构造子类,构造http请求),那么,能不能使用一些ai辅助编程工具来帮助我们快速完成这个功能呢?
于是尝试使用marscode进行辅助,快速的完成了这部分的代码。
加上一点点微调,最终也是成功的让程序跑了起来:
从使用体验上来说,对于这类重复性的代码编辑工作,非常适合使用类似的编程辅助工具来帮助我们快速完成一些低复杂度的代码,从而让我们可以更加专注于更复杂的代码工作。但同时,它可能也会暴露出一些问题:比如它无法基于项目工程来做代码辅助。在当前场景下,我可能更希望它不仅能够生成embedding的这部分代码,还能将这部分代码自己注册到项目的流程中去,使程序能够正常运行起来。