[AI] LlamaIndexアプリ製作 その10 ディレクトリへの対応

[M1 Mac, Ventura 13.3.1, Python 3.10.4]

これまでCSVとPDFの単ファイルに対応していましたが、ディレクトリ内の複数ファイルにも対応できるようにしました。TXTファイルも読み込めます。

def makeIDX(self):
    # インデックスの作成および保存
    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="gpt-3.5-turbo"))
    service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor)
    
    data_path = self.input.text()
    data_path2 = data_path.replace("'", "") # 拡張子判定用
    data_path3 = Path(data_path2) # loader用

    if data_path2.endswith('/'):
        documents = SimpleDirectoryReader(data_path3).load_data()
    elif data_path2.endswith('.csv'):
        SimpleCSVReader = download_loader("SimpleCSVReader")
        documents = SimpleCSVReader().load_data(file=data_path3)
    elif data_path2.endswith('.pdf'):
        PDFReader = download_loader("PDFReader")
        documents = PDFReader().load_data(file=data_path3)
    else:
        print('入力がディレクトリ,csv,pdfではありません')
        self.output.setText("入力がディレクトリ,csv,pdfではありません")
        self.box.setStyleSheet('background-color: #ff00ff')
        return

    index = GPTSimpleVectorIndex.from_documents(documents, service_context=service_context)
    
    now = datetime.datetime.now()
    formatted_time = now.strftime('%y%m%d_%H%M%S')

    index_file = "/Volumes/DATA_m1/AI/LlamaIndex/index/" + formatted_time + "_index.json"
    index.save_to_disk(index_file)
    
    self.input2.setText(index_file)
    self.idxBtn2.click()

[AI] LlamaIndexとLangChain(Chroma)の比較 その2 要約力

[M1 Mac, Ventura 13.3.1, Python 3.10.4]

今度は要約力を比較しました。とある英語論文のPDF1ページ目を読み込ませて、要約してもらいました。

こちらでもLlamaIndexに軍配があがりました。ここでLangChain(Chroma)が優れているのであれば、Embeddings Toolアプリとして両者を統合する目論見でしたが、現時点では正確性・要約力で明らかにLangChain(Chroma)が劣っているため見送りです。

.py /usr/local/bin/python /Volumes/DATA_m1/AI/LangChain/Python/ChatGPT_LangChain 
Using embedded DuckDB with persistence: data will be stored in: .
この論文では、大規模言語モデルマシン(LLMM)と高水準プログラミング言語のクラスとの間に接続を
確立する新しいアプローチを提案しています。これにより、Turingマシンオブジェクトと言語オブジェクトの間の
シームレスな相互作用が可能になり、普遍的にアクセス可能なオブジェクト指向の記述が実現されます。
LLMMを利用して、現実世界のオブジェクトとそれらのシミュレーションを言語シミュレーション可能な
世界に自動的に変換する方法を示し、デジタルツインコンセプトを推進します。このプロセスは高水準
プログラミング言語に拡張することができ、これらのシミュレーションの実装をよりアクセスしやすく
実用的にすることができます。