RAG实战1-基于LlamaIndex构建第一个RAG应用

一,环境准备

1,先更新pip版本: pip install --upgrade pip

2,安装Llamalndex相关包:

pip install llama-index
pip install llama-index-embeddings-huggingface
pip install llama-index-llms-huggingface

解释-llama-index是核心包;llama-index-embeddings-huggingface允许我们使用本地的embedding模型去完成文档的切分和编码等操作;llama-index-llms-huggingface允许我们使用本地的大模型去开发RAG应用。
3,下载embedding模型权重:‌Embedding模型‌是一种在‌机器学习和‌自然语言处理中广泛应用的技术,旨在将高维度的数据(如文字、图片、视频等)映射到低维度的空间

git lfs install

git clone https://www.modelscope.cn/AI-ModelScope/bge-base-zh-v1.5.git

4,下载模型文件:git clone https://www.modelscope.cn/qwen/Qwen1.5-14B-Chat.git

二,构建第一个RAG应用

1,文档准备:中医临床诊疗术语证候.txt(国家中医药管理局 国家卫生健康委员会关于印发《中医病证分类与代码》和《中医临床诊疗术语》的通知_国务院部门文件_中国政府网为落实《中共中央 国务院关于促进中医药传承创新发展的意见》《国务院办公厅关于加强三级公立医院绩效考核工作的意见》《关于印发国际疾病分类第十一次修订本(ICD-11)中文版的通知》等文件要求,国家中医药局组织修订了《中医病证分类与代码》和《中医临床诊疗术语》(可在国家中医药局官方网站“政策文件”栏目下载),现印发给你们,并就有关要求通知如下:icon-default.png?t=N7T8https://www.gov.cn/zhengce/zhengceku/2020-11/24/content_5563703.htm放入项目根目录下的document文件夹(新建文件夹document)中

2,导入所需要的包:

import logging
import sys
import torch
from llama_index.core import PromptTemplate, Settings, SimpleDirectoryReader, VectorStoreIndex, load_index_from_storage, \
    StorageContext, QueryBundle
from llama_index.core.schema import MetadataMode
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.huggingface import HuggingFaceLLM
from llama_index.core.node_parser import SentenceSplitter


3,定义日志配置:

logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))


4,定义System Prompt:

SYSTEM_PROMPT = """You are a helpful AI assistant."""
query_wrapper_prompt = PromptTemplate(
    "[INST]<<SYS>>\n" + SYSTEM_PROMPT + "<</SYS>>\n\n{query_str}[/INST] "
)


5,使用llama-index-llms-huggingface构建本地大模型:

llm = HuggingFaceLLM(
    context_window=4096,
    max_new_tokens=2048,
    generate_kwargs={"temperature": 0.0, "do_sample": False},
    query_wrapper_prompt=query_wrapper_prompt,
    tokenizer_name='/mnt/workspace/Qwen1.5-14B-Chat',
    model_name='/mnt/workspace/Qwen1.5-14B-Chat',
    device_map="auto",
    model_kwargs={"torch_dtype": torch.float16},
)
Settings.llm = llm

6,文档读取:

documents = SimpleDirectoryReader("document").load_data()

7,文档切分,构建向量索引:

index = VectorStoreIndex.from_documents(documents, transformations=[SentenceSplitter(chunk_size=256)])

8,构建查询引擎:

query_engine = index.as_query_engine(similarity_top_k=5)

9,获得答案:

response = query_engine.query("不耐疲劳,口燥、咽干可能是哪些证候?")
print(response)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值