要使用 Langchain 加载本地模型,您可以按照以下步骤进行:
在整个过程中,还需要了解以下相关知识:
加载所需的库和模块。其中,feedparse用于解析RSS订阅源ollama用于在python程序中跑大模型,使用前请确保ollama服务已经开启并下载好模型|从订阅源获取内容下面函数用于从指定的RSS订阅url提取内容,这里只是给了一个url,如果需要接收多个url,只要稍微改动即可。然后,通过一个专门的文本拆分器将长文本拆分成较小的块,并附带相关的元数据如标题、发布日期和链接。最终,这些文档被合并成一个列表并返回,可用于进一步的数据处理或信息提取任务。|为文档内容生成向量这里,我们使用文本向量模型bge-m3。https://huggingface.co/BAAI/bge-m3bge-m3是智源研究院发布的新一代通用向量模型,它具有以下特点:支持超过100种语言的语义表示及检索任务,多语言、跨语言能力全面领先(M ulti-Lingual)最高支持8192长度的输入文本,高效实现句子、段落、篇章、文档等不同粒度的检索任务(M ulti-Granularity)同时集成了稠密检索、稀疏检索、多向量检索三大能力,一站式支撑不同语义检索场景(M ulti-Functionality)从hf下载好模型之后,假设放置在某个路径/path/to/bge-m3,通过下面函数,利用FAISS创建一个高效的向量存储。|实现RAG
因为利用大模型的能力搭建知识库本身就是一个RAG技术的应用。所以在进行本地知识库的搭建实操之前,我们需要先对RAG有一个大概的了解。以下内容会有些干,我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片Output(输出):把问题以及检索出来的嵌入片一起提交给LLM,LLM会通过问题和检索出来的提示一起来生成更加合理的答案[heading2]文本加载器(Document Loaders)[content]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理
1.支持多种大型语言模型:Ollama支持包括通义千问、Llama 2、Mistral和Gemma等在内的多种大型语言模型,这些模型可用于不同的应用场景。2.易于使用:Ollama旨在使用户能够轻松地在本地环境中启动和运行大模型,适用于macOS、Windows和Linux系统,同时支持cpu和gpu。3.模型库:Ollama提供了一个模型库,用户可以从中下载不同的模型。这些模型有不同的参数和大小,以满足不同的需求和硬件条件。Ollama支持的模型库可以通过https://ollama.com/library进行查找。4.自定义模型:用户可以通过简单的步骤自定义模型,例如修改模型的温度参数来调整创造性和连贯性,或者设置特定的系统消息。5.API和集成:Ollama还提供了REST API,用于运行和管理模型,以及与其他应用程序的集成选项。6.社区贡献:Ollama社区贡献丰富,包括多种集成插件和界面,如Web和桌面应用、Telegram机器人、Obsidian插件等。7.总的来说,Ollama是一个为了方便用户在本地运行和管理大型语言模型而设计的框架,具有良好的可扩展性和多样的使用场景。后面在捏Bot的过程中需要使用Ollama,我们需要先安装,访问以下链接进行下载安装。https://ollama.com/download/安装完之后,确保ollama后台服务已启动(在mac上启动ollama应用程序即可,在linux上可以通过ollama serve启动)。我们可以通过ollama list进行确认,当我们还没下载模型的时候,正常会显示空:可以通过ollama命令下载模型,目前,我下载了4个模型:几个模型简介如下: