当前位置: 首页 > news >正文

【GPT入门】第64课 Ilamaindex初步认识与llm幻觉解决方法

【GPT入门】第64课 Ilamaindex初步认识与llm幻觉解决方法

  • 1.介绍
  • 2.安装
  • 3. 体验
    • 3.1 没有rag,产生幻觉
    • 3.2 rag,正确回答问题

1.介绍

LlamaIndex(前身为GPT Index)是一个专为大型语言模型(LLMs)设计的开源数据框架。以下是关于它的详细介绍:

  • 核心目标:连接LLM与异构外部数据源,解决模型在私有/实时数据场景下的局限性,通过高效索引、检索与上下文增强技术,赋能LLM实现精准的数据感知应用。
  • 核心功能
    • 数据连接器:提供各种数据连接器,可将LLM连接到不同类型的数据源,包括PDF、Word、文本文件等文档,RESTful API、GraphQL API等接口,PostgreSQL、MySQL、MongoDB等数据库,以及Notion、Slack、Google Docs等平台。
    • 数据索引:提供多种索引结构来组织和存储外部数据,以便LLM快速访问和检索相关信息,如列表索引、向量存储索引、树索引、关键字表索引等。
    • 查询接口:提供用户友好的查询接口,支持多种查询类型,如基于关键字的查询、语义查询、基于模板的查询等,用户还可以自定义查询逻辑。
  • 框架结构
    • 数据连接器:充当LLM与外部世界的桥梁,将各种不同类型的数据源连接到LlamaIndex框架中,使得LLM能够访问并读取各种数据。
    • 索引:负责将连接器获取的数据结构化地组织起来,以便LLM能够高效地访问和理解数据,不同的索引结构适用于不同的数据类型和查询场景。
    • 查询接口:为用户提供了一种与LLM交互并查询索引中数据的方式,用户可以通过查询接口向LLM提出问题,LLM会利用索引中的数据来生成答案。
  • 工作流程
    • 数据摄取:通过数据连接器将各种格式的外部数据源连接到LLM,LlamaIndex可加载160多种不同的数据格式。
    • 创建索引和存储:将采集的数据转换并组织为可供LLM检索的结构,如矢量存储索引、摘要索引和知识图谱索引等,然后进行存储,LlamaIndex支持众多矢量存储。
    • 查询:用户通过查询接口向LLM提出问题,查询引擎根据构建的索引返回最相关的结果,LLM利用这些结果生成答案。
  • 应用场景
    • 知识增强问答:从各种数据源中提取相关信息,回答用户问题,可用于企业知识库、智能客服、学术研究助手等场景。
    • 语义搜索:通过向量嵌入实现语义级别的搜索,可应用于文档搜索、法律文件检索、产品推荐等场景。
    • 数据分析与洞察:结合LLM和结构化数据,生成数据洞察或自然语言报告,适用于商业智能、财务报表分析等场景。
    • 智能体开发:构建能够调用工具、查询外部数据并执行复杂任务的智能体,如AI教练、自动化工作流、任务助手等。
    • 文档处理与自动化:解析和总结大量文档,提取关键信息,可用于合同分析、研究论文总结、会议记录处理等场景。
    • 多模态应用:支持文本、图像、表格等多模态数据,结合LLM进行综合分析,适用于多媒体内容分析、图文问答等场景。

2.安装

  • 安装conda环境 , 环境放到数据盘:
    mkdir /root/autodl-tmp/xxzhenv
    conda create --prefix /root/autodl-tmp/xxzhenv/llamaindex python=3.12 -y
    conda config --add envs_dirs /root/autodl-tmp/xxzhenv
    conda activate llamaindex

系统盘容量够大,可以直接安装
conda create -n llamaindex python=3.12 -y

  • 安装module

pip install llama-index -i https://mirrors.aliyun.com/pypi/simple
pip install llama-index-llms-huggingface -i https://mirrors.aliyun.com/pypi/simple
pip install modelscope -i https://mirrors.aliyun.com/pypi/simple
pip install llama-index-embeddings-huggingface

  • 下载模型
    modelscope download --model Qwen/Qwen1.5-1.8B-Chat --local_dir /root/autodl-tmp/models/Qwen/Qwen1.5-1.8B-Chat
    modelscope download --model sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local_dir /root/autodl-tmp/models/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

3. 体验

3.1 没有rag,产生幻觉

from llama_index.core.llms import ChatMessage
from llama_index.llms.huggingface import HuggingFaceLLM# 幻觉#使用HuggingFaceLLM加载本地大模型
llm = HuggingFaceLLM(model_name="/root/autodl-tmp/models/Qwen/Qwen1.5-1.8B-Chat",tokenizer_name="/root/autodl-tmp/models/Qwen/Qwen1.5-1.8B-Chat",model_kwargs={"trust_remote_code":True},tokenizer_kwargs={"trust_remote_code":True})
#调用模型chat引擎得到回复
rsp = llm.chat(messages=[ChatMessage(content="xtuner是什么?")])print(rsp)

3.2 rag,正确回答问题

# 导入HuggingFaceEmbedding,用于加载基于HuggingFace的文本向量模型
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
# 导入LlamaIndex的核心设置、文档读取器和向量存储索引
from llama_index.core import Settings, SimpleDirectoryReader, VectorStoreIndex
# 导入HuggingFaceLLM,用于加载基于HuggingFace的大语言模型
from llama_index.llms.huggingface import HuggingFaceLLM# 初始化文本向量模型(嵌入模型)
# 使用多语言迷你模型paraphrase-multilingual-MiniLM-L12-v2,适合生成多语言文本的向量表示
embed_model = HuggingFaceEmbedding(model_name="/root/autodl-tmp/models_xxzh/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"
)# 将嵌入模型配置到LlamaIndex的全局设置中
# 后续所有需要生成文本向量的操作都会使用这个模型
Settings.embed_model = embed_model# 初始化大语言模型(LLM)
# 使用Qwen1.5-1.8B-Chat模型,这是一个轻量级的对话模型
llm = HuggingFaceLLM(model_name="/root/autodl-tmp/models_xxzh/Qwen/Qwen1.5-1.8B-Chat",  # 模型文件路径tokenizer_name="/root/autodl-tmp/models_xxzh/Qwen/Qwen1.5-1.8B-Chat",  # 分词器路径(与模型同路径)model_kwargs={"trust_remote_code": True},  # 允许加载模型的自定义代码tokenizer_kwargs={"trust_remote_code": True}  # 允许加载分词器的自定义代码
)# 将LLM配置到LlamaIndex的全局设置中
# 后续所有需要生成回答的操作都会使用这个模型
Settings.llm = llm# 使用SimpleDirectoryReader读取指定目录下的文档
# 支持多种格式(如txt、pdf等),这里读取data目录下的所有文档
documents = SimpleDirectoryReader("/root/autodl-tmp/xxzh/llamaindex_xxzh/data").load_data()# 基于读取的文档创建向量存储索引
# 内部会自动使用上面配置的嵌入模型将文档转换为向量并存储
index = VectorStoreIndex.from_documents(documents)# 将索引转换为查询引擎,用于后续的问答交互
query_engine = index.as_query_engine()# 向查询引擎提问"xtuner是什么?"
# 系统会先检索相关文档,再结合LLM生成回答
rsp = query_engine.query("xtuner是什么?")# 打印回答结果
print(rsp)

文章转载自:

http://KXFomIpt.mLzyx.cn
http://pFYIv3wM.mLzyx.cn
http://FIfTHi5o.mLzyx.cn
http://Y6xTwgkR.mLzyx.cn
http://pnqYh5LG.mLzyx.cn
http://pzz9Vxpi.mLzyx.cn
http://pBD5jcmd.mLzyx.cn
http://OObUkwL2.mLzyx.cn
http://OAmS9rAM.mLzyx.cn
http://RLAfWKP2.mLzyx.cn
http://Txxopoig.mLzyx.cn
http://PkBA519D.mLzyx.cn
http://GZU1yOkm.mLzyx.cn
http://7nLBSP3c.mLzyx.cn
http://nOHIMWfA.mLzyx.cn
http://ZI0GXjk0.mLzyx.cn
http://qkez4MHk.mLzyx.cn
http://tLfE2rSE.mLzyx.cn
http://9duBXLxM.mLzyx.cn
http://BGVJKUA9.mLzyx.cn
http://es3Zrzji.mLzyx.cn
http://UhRNFgJo.mLzyx.cn
http://9SrzxhWM.mLzyx.cn
http://3PTCfEk8.mLzyx.cn
http://r0naYrHw.mLzyx.cn
http://fhDt1ir5.mLzyx.cn
http://OkJZv0wM.mLzyx.cn
http://02aiiyVI.mLzyx.cn
http://9wEJJ8To.mLzyx.cn
http://eBsr9hUZ.mLzyx.cn
http://www.dtcms.com/a/363191.html

相关文章:

  • 高效对象属性复制工具
  • WEWA、VLA、世界模型,辅助驾驶进入GPT时代
  • 使用 Gulp + Webpack 打造一个完整的 TypeScript 库构建流程
  • STL库——deque/priority_queue
  • Mysql安全之 TDE ,列加密,审计日志
  • SpringCloud(6)-优雅实现远程调用-OpenFeign
  • 基于springboot的“衣依”服装销售平台
  • git通过https和SSH上传gitee仓库
  • MongoDb(①免安装)
  • ​​​​​​​Blender 重拓扑修改器实战指南:从基础操作到细节优化​
  • Meta AIUCSD放大招:DeepConf 让大语言模型推理既快又准,84.7%的token节省+近乎完美的准确率!
  • WMT2014:机器翻译领域的“奥林匹克盛会“
  • 大模型RAG项目实战:RAG技术原理及核心架构
  • (TMLR-2024)DINOv2:在无监督条件下学习鲁棒的视觉特征
  • 【Element-Plus】媒体预览模态框优化实战:从复杂到简洁的设计之路
  • WHAT - HTMLRewriter 介绍(页面优化、SEO、广告注入)
  • C++入门自学Day17-- 模版进阶知识
  • 从程序员到「认识罕见病 DAO」发起人,他用 Web3 承载爱与责任
  • C# 简述委托,Func与Action委托。 他们之前有什么区别?
  • MCU上跑AI—实时目标检测算法探索
  • 将css中的线性渐变,径向渐变,锥心渐变,转成canvas中的渐变
  • 【高并发内存池】三、线程缓存的设计
  • SpringBoot3中使用Caffeine缓存组件
  • Ruoyi-vue-plus-5.x第三篇Redis缓存与分布式技术:3.2 缓存注解与使用
  • 悬停头部的实现方式之一 css: position: sticky
  • SQL Server-查询事务日志
  • 血缘元数据采集开放标准:OpenLineage Guides 在 Spark 中使用 OpenLineage
  • B2B营销面临的一些主要问题
  • 3025. 人员站位的方案数 I
  • HDI线路板与普通板有何区别?厂家生产难度在哪?