Llamaindex实战-在本地使用多种LLM

Llamaindex实战-在本地使用多种LLM

有关我们支持的大语言模型列表及其功能比较,请查看我们的大语言模型模块指南。

使用LLM的基本范式

构建基于 LLM 的应用程序时的第一步是决定使用哪个 LLM;也可以使用多个。
LLM 可用于管道的多个不同阶段:

  • 在索引期间,您可以使用 LLM 来确定数据的相关性(是否对其进行索引),或者您可以使用 LLM 来汇总原始数据并为摘要建立索引。
  • 在查询期间,LLM 可以通过两种方式使用:
  • 在检索(从索引中获取数据)期间,大语言模型可以获得一系列选项(例如多个不同的索引),并决定在哪里最好地找到您要查找的信息。代理LLM在这个阶段还可以使用工具来查询不同的数据源。
  • 在响应合成(将检索到的数据转换为答案)期间,LLM 可以将多个子查询的答案组合成一个连贯的答案,或者可以转换数据,例如从非结构化文本转换为 JSON 或其他编程输出格式。

LlamaIndex 为大量不同的 LLM 提供统一接口,允许您将您选择的任何 LLM 传递到管道的任何阶段。它可以像这样简单:

from llama_index.llms.openai import OpenAIresponse = OpenAI().complete("Paul Graham is ")
print(response)

通常,您将实例化 LLM 并将其传递到 Settings,然后将其传递到管道的其他阶段,如下例所示:

from llama_index.llms.openai import OpenAI
from llama_index.core import Settings
from llama_index.core import VectorStoreIndex, SimpleDirectoryReaderSettings.llm = OpenAI(temperature=0.2, model="gpt-4")# 加载可读文本
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents,
)

在本例中,您已实例化 OpenAI 并将其自定义为使用 gpt-4 模型而不是默认的 gpt-3.5-turbo,并且还修改了温度。 VectorStoreIndex 现在将使用 gpt-4 来回答查询时的问题。

设置(Settings)是一组配置数据,您可以将其传递到 LlamaIndex 的不同部分。您可以了解有关设置以及如何自定义它的更多信息。

使用本地大语言模型

  1. 使用ollama托管的模型

LlamaIndex 不仅支持托管的 LLM API;您还可以在本地运行本地模型,例如 Llama2。
例如,如果您安装并运行 Ollama:

from llama_index.llms.ollama import Ollama
from llama_index.core import SettingsSettings.llm = Ollama(model="llama3", request_timeout=60.0)

有关更多详细信息,请参阅自定义大语言模型的操作方法。

注意:这里的model="llama3"参数,可以通过ollama list来查看,换成自己本地ollama拉(pull)下来的模型。

  1. 使用HuggingFace的大模型

当然也可以使用huggeface中的模型:

Settings.llm = HuggingFaceLLM(model_name="HuggingFaceH4/zephyr-7b-beta",tokenizer_name="HuggingFaceH4/zephyr-7b-beta",context_window=3900,max_new_tokens=256,generate_kwargs={"temperature": 0.7, "top_k": 50, "top_p": 0.95},messages_to_prompt=messages_to_prompt,completion_to_prompt=completion_to_prompt,device_map="auto",
)

这里的model_name给出的模型可以是下载下来并保存在本地的模型,只需要给出本地模型的路径即可。

一个例子

from llama_index.core.llms import ChatMessage
from llama_index.llms.ollama import Ollama# ollama
llm = Ollama(model="llama3", request_timeout=360.0)# questions
messages = [ChatMessage(role="user", content="What is your name"),
]resp = llm.chat(messages)print(resp)

我在16C32G的机器上运行以上代码,运行了大约几分钟时间,得到以下输出:

assistant: I don't have a personal name. I'm an AI designed to assist and communicate with humans, so I don't have a personal identity or self-awareness. My purpose is to provide information, answer questions, and help users like you with their queries. I exist solely as a digital entity, and my "name" is simply "Assistant" or "AI" - no specific name assigned to me!

从以上反馈来看,该模型的输出还是相对比较好的。

另外,要注意,messages这个参数可以输入多个角色和问题,类似于这样:

messages = [ChatMessage(role="user", content="who are you?"),ChatMessage(role="user", content="What is your name?"),
]

提示(Prompts)

默认情况下,LlamaIndex 附带了一组经过实战检验的内置提示,可处理让特定 LLM 正确处理和格式化数据的棘手工作。这是使用 LlamaIndex 的最大好处之一。如果需要,您可以自定义提示

参考
  • Using LLMs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6.29学习笔记

马克思 “流”:两个选它纺织厂生产的棉花属于:不变资本、流动资本;机器属于:不变资本、固定资本剩余价值生产的基本方法:绝对剩余价值、相对剩余价值货币的基本职能:价值尺度,流通手段“价格围…

p2p、分布式,区块链笔记: libp2p基础

通信密钥 noise::{Keypair, X25519Spec} X25519/Ed25519类似RSA 算法。Noise 用于设计和实现安全通信协议。它允许通信双方在没有预先共享密钥的情况下进行安全的密钥交换,并通过加密和身份验证保护通信内容。libp2p 提供了对 Noise 协议的原生支持,它允…

20、PHP字符串的排列(含源码)

题目: PHP字符串的排列? 描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可…

尺度函数在图像处理中的应用与优化

尺度函数在图像处理中的应用与优化 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨尺度函数在图像处理中的应用与优化。尺度函数是图像处理中…

spring快速上手

一、基础概念 1.使用spring后&#xff0c;被spring管理的类&#xff0c;不需要再new。 2.要想类被spring管理&#xff0c;则需要通过bean的方式&#xff0c;把类引入到spirng的配置文件中。 二、导入spring框架 导入spring依赖 <properties><maven.compiler.sourc…

2-requests模块(6节课学会爬虫)

2-requests模块&#xff08;6节课学会爬虫&#xff09; 1&#xff0c;安装requests2&#xff0c;发送get&#xff0c;post请求&#xff0c;获取响应3&#xff0c;response的方法方法一&#xff08;Response.text&#xff09;方法二&#xff08;response.content.decode()&#…

Docker 查看源地址/仓库地址,更改

一、源地址文件配置路径。若有docker文件夹&#xff0c;没有json&#xff0c;可以新增&#xff0c;复制进去内容 /etc/docker/daemon.json {"registry-mirrors": ["https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com"&#xff0c;&q…

JWT权限验证

在Web开发中&#xff0c;用户认证和授权是确保系统安全和数据安全的关键环节。随着前后端分离、微服务架构等技术的普及&#xff0c;传统的基于session的用户认证机制已经很难去满足现代Web应用的需求。JWT&#xff08;JSON Web Tokens&#xff09;作为一种轻量级的认证和授权机…

【数据分析】1、用Pandas计算数据相关性系数

相关性系数和相关分析是了解变量之间关系的重要工具。通过合理选择相关性系数和科学分析数据&#xff0c;能够有效揭示变量之间的关系&#xff0c;为进一步研究和决策提供有力支持。在实际应用中&#xff0c;应结合业务背景、数据特性和统计原则&#xff0c;谨慎解释和应用相关…

物联网相关

因为收藏夹上限了&#xff0c;所以只能这个帖子来记录物联网相关得文章了。 链接: 搭建自己的MQTT服务器、实现设备上云(WindowsEMQX) 链接: Windows系统下本地MQTT服务器搭建&#xff08;保姆级教程&#xff09;

【小学期】常用基于Swing的七个静态界面

示例1&#xff1a;基本的带按钮和标签的界面 import javax.swing.*; import java.awt.*;public class SimpleSwingApp1 {public static void main(String[] args) {JFrame frame new JFrame("Simple Swing App 1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_C…

【linux】从零到入门

linux概述 Linux是一个免费使用和自由传播的一套操作系统。用户可以无偿地得到它地源代码&#xff0c;和大量地应用程序&#xff0c;并且可以随意修改和增加它们。 Linux的内核起初由林纳斯编写。内核是啥&#xff1f; 驱动设备&#xff0c;文件系统&#xff0c;进程管理&…

UE5(c++)demo开发日志(1):Actor类添加

工具---新建c类---选用Actor&#xff0c;创造出头文件(.h&#xff0c;用于声明变量、函数、重写父类函数等)和源文件(.cpp&#xff0c;涉及到具体功能实现)&#xff0c;客户端界面成功显示出来新建类&#xff1a; Actor头文件默认方法简介&#xff1a; UCLASS(): ue提供的宏&a…

算法-位运算基础

文章目录 1. 前置知识2. 交换两个数3. 比较两个数的大小3. leetcode268 寻找缺失的数字4. leetcode136 只出现一次的数字5. leetcode260 只出现一次的数字|||6. leetcode137 只出现一次的数字||7. 2/3的幂8. 大于等于该数字的最小2的幂9. leetcode201 数字范围按位与10. 位运算…

Docker部署Dillinger个人文本编辑器

Docker部署Dillinger个人文本编辑器 一、Dillinger介绍1.1 Dillinger简介1.2 Dillinger使用场景 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、拉取Dillinger镜像五、部署Dill…

汇聚荣拼多多运营好吗?

在当前电商行业竞争激烈的背景下&#xff0c;拼多多凭借其独特的商业模式和市场定位迅速崛起&#xff0c;成为众多商家和品牌争相入驻的平台。对于“汇聚荣拼多多运营好吗?”这一问题&#xff0c;答案是肯定的。拼多多不仅提供了一个广阔的市场空间&#xff0c;还通过其创新的…

HTML5+JavaScript单词游戏

HTML5 JavaScript单词游戏 数据字典格式&#xff1a;每行一个 单词 &#xff0c;单词和解释用空格分隔&#xff0c;如 a art.一(个)&#xff1b;每一(个) ability n.能力&#xff1b;能耐&#xff0c;本领 able a.有能力的&#xff1b;出色的 baby n.婴儿&#xff1b;孩子…

数据库对比脚本,java如何对比两个数据库的表字段的不同

因为有时候开发环境和 测试环境&#xff0c;有时候会有不同的数据库表&#xff0c;比如有些加字段了&#xff0c;所以这个脚本就实现了对比两个数据库连接的数据库到底哪里不一样&#xff0c;输出到控制台 package com.junfun.pms;import lombok.extern.slf4j.Slf4j;import ja…

25届最近5年北京工业大学自动化考研院校分析

北京工业大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教…

C++进修——C++核心编程

内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制编码&#xff0c;由操作系统进行管理全局区&#xff1a;存放全局变量和静态变量以及常量栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#xff…