PR

ChromaDBを使用したセマンティック検索アプリケーションの構築

プログラミング学習

こんにちは、じゃんぼです。最近、ChatGPTの社内活用検討をひっそりと進めていました。

そんな中、どうやって会社の情報を学習させた生成AIを構築できるのか、情報収集をしていたらLangChainにたどり着きました。

LangChainのIndexesを使うと独自ノウハウを簡単にベクトル化し、ChatGPTに学習させた環境を作ることができました。

試行錯誤しているのですが、もっと中身をしっかり理解する必要があるなと感じ、今回はベクトルデータを格納しているChormaDBについて学んでみました。

参考にしたサイトはこちらです。

Build Semantic search applications using Open Source Vector database ChromaDB
Learn to use ChromaDB for a semantic search application

ChromaDBはAIモデルの埋め込みを格納するためのオープンソースのベクトルデータベースとして注目を集めています。この記事では、ChromaDBを使用してセマンティック検索アプリケーションを構築する方法について詳しく解説します。

ChromaDBとは?

ChromaDBは、GPT3.5、GPT-4、または他のOSモデルなどのAIモデルからの埋め込みを格納するためのオープンソースのベクトルデータベースです。これにより、ユーザーはテキストデータの埋め込みを作成し、類似のテキストを効率的に検索することができます。

ChromaDBの主な特徴

  • オープンソース: ChromaDBは完全にオープンソースであり、誰でも利用、改変、配布することができます。
  • 柔軟性: ChromaDBは、さまざまな埋め込みモデルをサポートしています。これには、sentence transformersモデル、OpenAI API、Cohereなどが含まれます。
  • 高速な検索: ChromaDBを使用すると、大量のテキストデータの中から関連する情報を迅速に検索することができます。

ChromaDBのインストール

ChromaDBのインストールは非常に簡単です。以下のコマンドを使用して、Python環境にインストールすることができます。

pip install -q chromadb

ここでWindows端末の場合、C++ビルドツールをインストールしてください、となりchromadbのインストールエラーになることがあります。

その場合は、以下のリンクのC++ビルドツールのインストール手順を参考にしてください。

ChromaDBの基本的な使い方

1. コレクションの作成

ChromaDBでは、データを保存するためのコレクションを作成する必要があります。以下のコードを使用して、新しいコレクションを作成します。

import chromadb
client = chromadb.Client()
collection = client.create_collection("my-collection")

2. データの追加

次に、コレクションにデータを追加します。以下のコードは、いくつかのサンプルドキュメントを追加する方法を示しています。

# add the documents in the db
collection.add(
    documents=["This is a document about cat", "This is a document about car", "This is a document about bike"],
    metadatas=[{"category": "animal"}, {"category": "vehicle"}, {"category": "vehicle"}],
    ids=["id1", "id2","id3"]
)

3. データの検索

データを追加した後、関連する情報を検索することができます。以下のコードは、”vehicle”というキーワードでデータを検索する方法を示しています。

# ask the querying to retrieve the data from DB
results = collection.query(
    query_texts=["vehicle"],
    n_results=1
)

resultsには以下のような出力結果が得られます

{'ids': [['id2']],
 'distances': [[0.8069301843643188]],
 'metadatas': [[{'category': 'vehicle'}]],
 'embeddings': None,
 'documents': [['This is a document about car']]}

まとめ

ChromaDBは、セマンティック検索アプリケーションを構築するための強力なツールです。

オープンソースの性質、柔軟性、高速な検索能力により、ChromaDBは多くの開発者にとって魅力的な選択肢となっています。

コメント

タイトルとURLをコピーしました