基于LlamaIndex构建RAG应用

2025-05-21   访问量:1004


Llamaindex中使用阿里云百炼提供的检索增强服务。

开始

前提条件

  • 您需要已获取API Key配置API Key到环境变量

  • 如果需要指定业务空间,还要获取指定业务空间的“业务空间ID”。具体操作,请参见如何使用业务空间

  • Python编程工具的终端中执行以下命令安装DashScopeCloudIndex的安装包(您的Python版本要求:>=3.8 且 <=3.12)。

     

    pip install llama-index-core
    pip install llama-index-llms-dashscope
    pip install llama-index-indices-managed-dashscope

文件解析

准备您的知识库文件:

  • 可以是一个或多个独立的文件。

  • 可以将所有文件放在一个文件夹中。

下面的例子将使用阿里云百炼的DashScopeParse作为文档解析器。

DashScopeParse 解析器支持在线解析 .doc、.docx、.pdf 文件,要求单个文件的大小在100M以内, 并且文件页数在1000以内。

 

import osfrom llama_index.readers.dashscope.base import DashScopeParsefrom llama_index.readers.dashscope.utils import ResultType# 设置业务空间 ID 将决定文档解析结果在”创建知识库“步骤中上传到哪个业务空间os.environ['DASHSCOPE_WORKSPACE_ID'] = "<Your Workspace id, Default workspace is empty.>"# 第一种方式:使用文档解析器解析一个或多个文件file = [    # 需要解析的文件,支持pdf,doc,docx]# 解析文件parse = DashScopeParse(result_type=ResultType.DASHSCOPE_DOCMIND)
documents = parse.load_data(file_path=file)# 第二种方式:使用文档解析器解析一个文件夹内指定类型的文件from llama_index.core import SimpleDirectoryReader
parse = DashScopeParse(result_type=ResultType.DASHSCOPE_DOCMIND)# 定义不同文档类型的解析器file_extractor = {".pdf": parse, '.doc': parse, '.docx': parse}# 读取文件夹,提取和解析文件信息documents = SimpleDirectoryReader(    "your_folder", file_extractor=file_extractor
).load_data(num_workers=1)

上传成功后,您可以访问非结构化数据页签,查看上传后的文档。

创建知识库

使用得到的documents创建知识库。

 

from llama_index.indices.managed.dashscope import DashScopeCloudIndex# create a new indexindex = DashScopeCloudIndex.from_documents(
    documents,    "my_first_index",
    verbose=True,
)

创建成功后,您可以在知识库页面查看已创建的知识库。

读取知识库

通过以下代码,您可以在Llamaindex中初始化已创建的知识库。

 

index = DashScopeCloudIndex("my_first_index")

获得retriever

您可以从index对象中快速获得您的retriever,或者使用知识库名称初始化您的DashScopeCloudRetriever。

 

# convert from indexretriever = index.as_retriever()# initialize from DashScopeCloudRetrieverfrom llama_index.indices.managed.dashscope.retriever import DashScopeCloudRetriever
retriever = DashScopeCloudRetriever("my_first_index")

nodes = retriever.retrieve("my query")

获得query engine

 

from llama_index.llms.dashscope import DashScope, DashScopeGenerationModels

dashscope_llm = DashScope(
  model_name=DashScopeGenerationModels.QWEN_MAX, api_key=os.environ["DASHSCOPE_API_KEY"]
)

query_engine = index.as_query_engine(llm=dashscope_llm)

向知识库新增/删除文档

 

# add documents to indexindex._insert(documents)# delete documents from indexindex.delete_ref_doc([doc_id])


热门文章
更多>