llamaindex实现rag

1.用国内的免费gpu资源启动实例

魔搭社区

1)下载大模型

import torch
from modelscope import snapshot_download

# snapshot_download函数用于下载模型
model_dir = snapshot_download(
    'qwen/Qwen2-7B-Instruct',  # 模型名称
    cache_dir='/root/autodl-tmp',  # 缓存目录
    revision='master'  # 版本号
)

2)下载嵌入模型

import torch
from modelscope import snapshot_download

# snapshot_download函数用于下载模型
model_dir = snapshot_download(
    'AI-ModelScope/bge-base-zh-v1.5',  # 模型名称
    cache_dir='/root/autodl-tmp',  # 缓存目录
    revision='master'  # 版本号
)

3)安装 LlamaIndex

!pip install llama_index llama-index-llms-huggingface  llama-index-readers-web llama-index-core llama-index-llms-openai llama-index-llms-replicate llama-index-embeddings-huggingface

4)导入依赖

import torch
from llama_index.core import Settings
from llama_index.core.node_parser import SentenceSplitter
from llama_index.llms.huggingface import HuggingFaceLLM
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

5)设置提示模版

# Set prompt template for generation (optional)
from llama_index.core import PromptTemplate

def completion_to_prompt(completion):
   return f"<|im_start|>system\n<|im_end|>\n<|im_start|>user\n{completion}<|im_end|>\n<|im_start|>assistant\n"

def messages_to_prompt(messages):
    prompt = ""
    for message in messages:
        if message.role == "system":
            prompt += f"<|im_start|>system\n{message.content}<|im_end|>\n"
        elif message.role == "user":
            prompt += f"<|im_start|>user\n{message.content}<|im_end|>\n"
        elif message.role == "assistant":
            prompt += f"<|im_start|>assistant\n{message.content}<|im_end|>\n"

    if not prompt.startswith("<|im_start|>system"):
        prompt = "<|im_start|>system\n" + prompt

    prompt = prompt + "<|im_start|>assistant\n"

    return prompt

6)加载语言模型


# Set Qwen2 as the language model and set generation config
Settings.llm = HuggingFaceLLM(
    model_name="/root/autodl-tmp/qwen/Qwen2-7B-Instruct",
    tokenizer_name="/root/autodl-tmp/qwen/Qwen2-7B-Instruct",
    #model_name="Qwen/Qwen2-7B-Instruct",
    #tokenizer_name="Qwen/Qwen2-7B-Instruct",
    context_window=30000,
    max_new_tokens=2000,
    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",
)

7)加载嵌入模型以支持文档的向量化处理:


# Set embedding model
Settings.embed_model = HuggingFaceEmbedding(
    model_name = "/root/autodl-tmp/AI-ModelScope/bge-base-zh-v1___5"
)

8)设置文件分块大小

# Set the size of the text chunk for retrieval
Settings.transformations = [SentenceSplitter(chunk_size=1024)]

9)文档内容索引构建

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
documents = SimpleDirectoryReader("./document").load_data()
index = VectorStoreIndex.from_documents(
    documents,
    embed_model=Settings.embed_model,
    transformations=Settings.transformations
)

10)检索增强(RAG)测试(基于你的文档内容测试)

query_engine = index.as_query_engine()
your_query = "main_trainer.py的内容"
print(query_engine.query(your_query).response)

11)索引保存到本地

index.storage_context.persist()

12)从磁盘重新加载索引

from llama_index.core import StorageContext, load_index_from_storage

# rebuild storage context
storage_context = StorageContext.from_defaults(persist_dir="./storage")
# load index
index = load_index_from_storage(storage_context)

13)加载后重新测试

query_engine = index.as_query_engine()
your_query = "main_trainer.py的内容  "
print(query_engine.query(your_query).response)

RAGAs(Retrieval-Augmented Generation Assessment)是一个用于评估检索增强生成(RAG)系统的框架。它的主要目的是提供一种无参考评估的方法,以便在没有人工标注数据的情况下评估RAG系统的性能。以下是RAGAs的几个关键点:

RAGAs的核心概念

  1. 评估框架
    RAGAs专注于对RAG流程进行评估,尤其是在检索和生成质量方面。它允许研究人员和开发者在构建RAG系统时,对其效果进行量化评估。
  2. 无参考评估
    RAGAs的一个显著特点是它不依赖于人工标注的标准答案。这意味着在评估过程中,可以使用大语言模型(LLM)生成的答案来进行比较,而不需要预先定义的正确答案。
  3. 评估指标
    RAGAs提供了多个评估指标,包括:
    • 上下文相关性(Context Relevancy):评估检索到的上下文与问题的相关程度。
    • 召回率(Context Recall):衡量检索系统从知识库中找到相关信息的能力。
    • 忠实性(Faithfulness):评估生成的答案是否忠实于检索到的上下文。
    • 答案相关性(Answer Relevancy):评估生成的答案是否与用户的问题相关。
  4. 应用场景
    RAGAs可以用于各种RAG系统的评估,尤其是在自然语言处理(NLP)领域。它适用于需要结合检索信息与生成能力的应用,如问答系统、对话系统等。
  5. 开源工具
    RAGAs的实现已经开源,提供了相关的文档和示例代码,方便开发者在自己的项目中使用。

总结

RAGAs为RAG系统的评估提供了一种灵活且高效的方法,尤其是在缺乏人工标注数据的情况下。通过利用大语言模型的能力,RAGAs能够在多个维度上评估检索和生成的质量,从而帮助开发者优化和改进他们的RAG应用。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值