code: def main(args):
      input_path = args.input_path
      model_path = args.model_path
      model_family = args.model_family
      query = args.question
      n_ctx = args.n_ctx
      n_threads = args.thread_num
  
      callback_manager = CallbackManager(
          [StreamingStdOutCallbackHandler()]
      )
  
      # split texts of input doc
      with open(input_path) as f:
          input_doc = f.read()
      text_splitter = CharacterTextSplitter(
          chunk_size=1000, chunk_overlap=0
      )
      texts = text_splitter.split_text(input_doc)
  
      model_family_to_embeddings = {
          "llama": LlamaEmbeddings,
          "gptneox": GptneoxEmbeddings,
          "bloom": BloomEmbeddings,
          "starcoder": StarcoderEmbeddings,
      }
  
      model_family_to_llm = {
          "llama": LlamaLLM,
          "gptneox": GptneoxLLM,
          "bloom": BloomLLM,
          "starcoder": StarcoderLLM,
      }
  
      if (
          model_family in model_family_to_embeddings
          and model_family in model_family_to_llm
      ):
          llm_embeddings = model_family_to_embeddings[model_family]
          langchain_llm = model_family_to_llm[model_family]
      else:
          raise ValueError(f"Unknown model family: {model_family}")
  
      # create embeddings and store into vectordb
      embeddings = llm_embeddings(
          model_path=model_path, n_threads=n_threads, n_ctx=n_ctx
      )
      docsearch = Chroma.from_texts(
          texts,
          embeddings,
          metadatas=[{"source": str(i)} for i in range(len(texts))],
      ).as_retriever()
  
      # get relavant texts
      docs = docsearch.get_relevant_documents(query)
  
      bigdl_llm = langchain_llm(
          model_path=model_path,
          n_ctx=n_ctx,
          n_threads=n_threads,
          callback_manager=callback_manager,
      )
  
      doc_chain = load_qa_chain(
          bigdl_llm,
          chain_type="stuff",
          prompt=QA_PROMPT,
          callback_manager=callback_manager,
      )
  
      doc_chain.run(input_documents=docs, question=query)
  
file_path: BigDL/python/llm/example/CPU/LangChain/native_int4/docqa.py
imports: import argparse
  from langchain.vectorstores import Chroma
  from langchain.chains.chat_vector_db.prompts import CONDENSE_QUESTION_PROMPT, QA_PROMPT
  from langchain.text_splitter import CharacterTextSplitter
  from langchain.chains.question_answering import load_qa_chain
  from langchain.callbacks.manager import CallbackManager
  from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
  from bigdl.llm.langchain.llms import *
  from bigdl.llm.langchain.embeddings import *
label_desc: Use image node_id 1 for calling a global function with example usage: main(args) without return types