当前位置:   article > 正文

基于LangChain、LlamaIndex和OpenAI,轻松打造知识库_sk langchain lamaindex

sk langchain lamaindex

大家好,本文将介绍使用 LangChain、LlamaIndex 和 Azure OpenAI 开发自定义知识库,学习使用提供的 Python 代码摄取、索引和查询数据。

1.设置和安装

1.1  创建Python环境并激活

(如果使用的是Colab或Jupyter笔记本,则不需要此步骤)

  1. python -m venv venv
  2. source venv/bin/activate  # 在Windows上,请使用`venv\Scripts\activate`

1.2 安装所需的库

!pip install openai langchain llama_index pypdf PyCryptodome gradio

导入所有库:

  1. from llama_index import StorageContext, ServiceContext, GPTVectorStoreIndex, LLMPredictor, PromptHelper, SimpleDirectoryReader, load_index_from_storage
  2. from langchain.chat_models import ChatOpenAI
  3. import gradio as gr
  4. import sys
  5. import os
  6. import openai

2.初始化和配置

2.1  将OpenAI API密钥设置为环境变量

  1. import os
  2. # 将API密钥设置为环境变量。
  3. os.environ['OPENAI_API_KEY'] = "sk-xxxxxx"
  4. # 进入OpenAI帐户,个人配置文件并选择设置
  5. openai.organization = "org-xxxxxxx"

2.2 使用API密钥初始化OpenAI

  1. import openai
  2. # 使用你的API密钥。
  3. openai.api_key = os.getenv("OPENAI_API_KEY")

3.数据摄取和索引

创建名为data的目录,并将文档放置在其中,运行以下Python代码以摄取和索引数据:

  1. def create_service_context():
  2.     #约束参数
  3.     max_input_size = 4096
  4.     num_outputs = 512
  5.     max_chunk_overlap = .5
  6.     chunk_size_limit = 600
  7.     #允许用户显式设置某些约束参数
  8.     prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
  9.     #LLMPredictor是一个允许轻松将LangChain的LLMChain集成到LlamaIndex中的包装类
  10.     llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo", max_tokens=num_outputs))
  11.     #构造service\_context
  12.     service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)
  13.     return service_context
  14. def data_ingestion_indexing(directory_path):
  15.     #从指定目录路径加载数据
  16.     documents = SimpleDirectoryReader(directory_path).load_data()
  17.     #首次构建索引时
  18.     index = GPTVectorStoreIndex.from_documents(
  19.         documents, service_context=create_service_context()
  20.     )
  21.     #将索引持久化到磁盘,默认“存储”文件夹
  22.     index.storage_context.persist()
  23.     return index

4.查询数据

4.1 运行以下 Python 代码

  1. def data_querying(input_text):
  2.     #重新构建存储上下文
  3.     storage_context = StorageContext.from_defaults(persist_dir="./storage")
  4.     #从存储加载索引
  5.     index = load_index_from_storage(storage_context, service_context=create_service_context())
  6.     #使用输入文本查询索引
  7.     response = index.as_query_engine().query(input_text)
  8.     return response.response

4.2 创建Gradio接口

  1. iface = gr.Interface(fn=data_querying,
  2.                      inputs=gr.components.Textbox(lines=7, label="Enter your text"),
  3.                      outputs="text",
  4.                      title="Dr. Lee and the Custom-trained Machine Learning Knowledge Base")

将数据导入,确保将一些文档(可能是几个PDF和Word文档)加载到数据目录中。如果不存在,则创建数据目录。这里只做几个,因为录入需要一段时间。

  1. !pip install docx2txt
  2. #传入数据目录
  3. index = data_ingestion_indexing("data")

4.3 启动应用程序

iface.launch(share=True, debug=True)

图片

进行上述操作之后,现在就可以查询文档了,这样就完成文档知识库的创建。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/662491
推荐阅读
相关标签
  

闽ICP备14008679号