赞
踩
大家好,本文将介绍使用 LangChain、LlamaIndex 和 Azure OpenAI 开发自定义知识库,学习使用提供的 Python 代码摄取、索引和查询数据。
(如果使用的是Colab或Jupyter笔记本,则不需要此步骤)
- python -m venv venv
- source venv/bin/activate # 在Windows上,请使用`venv\Scripts\activate`
!pip install openai langchain llama_index pypdf PyCryptodome gradio
导入所有库:
- from llama_index import StorageContext, ServiceContext, GPTVectorStoreIndex, LLMPredictor, PromptHelper, SimpleDirectoryReader, load_index_from_storage
- from langchain.chat_models import ChatOpenAI
- import gradio as gr
- import sys
- import os
- import openai
- import os
- # 将API密钥设置为环境变量。
- os.environ['OPENAI_API_KEY'] = "sk-xxxxxx"
- # 进入OpenAI帐户,个人配置文件并选择设置
- openai.organization = "org-xxxxxxx"
- import openai
- # 使用你的API密钥。
- openai.api_key = os.getenv("OPENAI_API_KEY")
创建名为data
的目录,并将文档放置在其中,运行以下Python代码以摄取和索引数据:
- def create_service_context():
-
- #约束参数
- max_input_size = 4096
- num_outputs = 512
- max_chunk_overlap = .5
- chunk_size_limit = 600
-
- #允许用户显式设置某些约束参数
- prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
-
- #LLMPredictor是一个允许轻松将LangChain的LLMChain集成到LlamaIndex中的包装类
- llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo", max_tokens=num_outputs))
-
- #构造service\_context
- service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)
- return service_context
-
- def data_ingestion_indexing(directory_path):
-
- #从指定目录路径加载数据
- documents = SimpleDirectoryReader(directory_path).load_data()
-
- #首次构建索引时
- index = GPTVectorStoreIndex.from_documents(
- documents, service_context=create_service_context()
- )
-
- #将索引持久化到磁盘,默认“存储”文件夹
- index.storage_context.persist()
-
- return index
- def data_querying(input_text):
-
- #重新构建存储上下文
- storage_context = StorageContext.from_defaults(persist_dir="./storage")
-
- #从存储加载索引
- index = load_index_from_storage(storage_context, service_context=create_service_context())
-
- #使用输入文本查询索引
- response = index.as_query_engine().query(input_text)
-
- return response.response
- iface = gr.Interface(fn=data_querying,
- inputs=gr.components.Textbox(lines=7, label="Enter your text"),
- outputs="text",
- title="Dr. Lee and the Custom-trained Machine Learning Knowledge Base")
将数据导入,确保将一些文档(可能是几个PDF和Word文档)加载到数据目录中。如果不存在,则创建数据目录。这里只做几个,因为录入需要一段时间。
- !pip install docx2txt
- #传入数据目录
- index = data_ingestion_indexing("data")
iface.launch(share=True, debug=True)
进行上述操作之后,现在就可以查询文档了,这样就完成文档知识库的创建。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。