LlamaIndex 与 ChatGPT 检索答案的时间过长

Agg*_*cel 6 python openai-api chatgpt-api llama-index

我目前正在为我们的网站开发一个聊天机器人,该机器人使用 LlamaIndex 和 chatGPT 提供领域知识。我们的聊天机器人使用大约 50 个文档,每个文档长约 1-2 页,包含来自我们网站的教程和其他信息。虽然我得到的答案很好,但性能很慢。平均而言,检索答案大约需要 15-20 秒,这对于我们的网站来说不切实际。

我已经按照文档中的建议尝试使用优化器,但没有看到太大的改进。目前,我正在使用 GPTSimpleVectorIndex,尚未测试其他索引。我尝试在不同的机器上运行机器人,但没有看到性能的显着改进,所以我不认为这是硬件限制。

我正在寻找有关如何提高机器人性能的建议,以便它可以更快地提供答案。

谢谢你!

代码:

import os
import sys
import streamlit as st
from llama_index import (LLMPredictor, GPTSimpleVectorIndex, 
                         SimpleDirectoryReader, PromptHelper, ServiceContext)
from langchain import OpenAI

os.environ["OPENAI_API_KEY"] = ...
retrain = sys.argv[1]
doc_path = 'docs'
index_file = 'index.json'
st.title("Chatbot")

def ask_ai():
    st.session_state.response  = index.query(st.session_state.prompt)

if retrain:
    documents = SimpleDirectoryReader(doc_path).load_data()
    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="text-davinci-003", max_tokens = 128))
    num_output = 256
    max_chunk_overlap = 20
    max_input_size = 4096
    prompt_helper = PromptHelper(max_input_size, num_output, max_chunk_overlap)
    service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)
    index = GPTSimpleVectorIndex.from_documents(
        documents, service_context=service_context
    )
    index.save_to_disk(index_file)

if 'response' not in st.session_state:
    st.session_state.response = ''

elif os.path.exists(index_file):
    index = GPTSimpleVectorIndex.load_from_disk(index_file)

if index != None:
    st.text_input("Ask something: ", key='prompt')
    st.button("Send", on_click=ask_ai)
    if st.session_state.response:
        st.subheader("Response: ")
        st.success(st.session_state.response)
Run Code Online (Sandbox Code Playgroud)

小智 1

Streamlit 默认情况下是无状态的。这意味着,如果您设置重新训练参数,它将运行整个过程,包括文档加载和索引每个交互。如果您希望它仅在启动时重新索引,则需要将 retrain arg 添加到 st.session_state,然后在 retrain 函数末尾将其设置为 false。