Datawhale AI夏令营 RAG篇 task2
在Llama-index中配置大模型
任务二主要是使用Llama-index,把我们需要的大模型:一个用于对话的LLM,一个用于文本向量化的Embedding模型,在Llama-index里配置好。
我在这里,是使用了Llama-index的官方定制包
这是最直接、最方便的一种方法。Llama-index为一些主流的大模型厂商提供了官方的、专门的集成包。比如,教程里提到的智谱AI和零一万物,它们都有自己的llama-index-llms-*和llama-index-embeddings-*包。
我们只需要安装这些特定的包,然后就可以从里面导入专门的类(比如ZhipuAI和ZhipuAIEmbedding)。在实例化这些类的时候,把我们自己的api_key和想要使用的模型名称传进去就可以了。
这种方法的优点是简单无脑,基本不会出错。但缺点也很明显,就是覆盖范围有限,目前Llama-index只为少数几家国内厂商提供了这种“VIP待遇”。如果想用的模型没有官方包,这个方法就行不通了。
不过,很多国内的大模型厂商,为了方便开发者迁移,都提供了与OpenAI完全兼容的API接口。我们可以继续使用Llama-index里为OpenAI设计的类,比如OpenAI和OpenAIEmbedding,只需要在初始化的时候,把api_base参数指向我们国内厂商的服务地址,同时传入对应的api_key和模型名称就行了。
不过,这里有一个坑。Llama-index的OpenAI相关类内部,如果它不认识你传进来的模型名字(比如智谱的glm-4-flash),就会报错。
为了绕过这个检查,教程里介绍了两种技巧。第一种是“继承重写”,我们自己新建一个类,比如叫NewOpenAI,让它继承自官方的OpenAI类,然后只重写那个负责返回模型元数据的方法,在里面直接写死一个它认识的上下文窗口大小,从而骗过检查。第二种方法更直接,就是找到Llama-index安装目录里的源代码文件,直接在那个白名单字典里,把我们想用的模型名称手动加进去。修改完源码后,记得重启一下Jupyter内核才能生效。
这种方法几乎适用于所有提供OpenAI兼容接口的模型,适用性非常广。
这里简单介绍一下第一种方法
首先需要把所需要的包安装好
%pip install llama-index-core
%pip install llama-index-embeddings-zhipuai
%pip install llama-index-llms-zhipuai
%pip install llama-index-readers-file
%pip install llama-index-vector-stores-faiss
%pip install llamaindex-py-client
然后按照教程来走就行,你可以问一下别的问题:

最后如果测试结果没有什么问题,那么task2差不多就是大功告成了


浙公网安备 33010602011771号