こんにちは、じゃんぼです。最近、ChatGPTの社内活用検討をひっそりと進めていました。
そんな中、どうやって会社の情報を学習させた生成AIを構築できるのか、情報収集をしていたらLangChainにたどり着きました。
LangChainのIndexesを使うと独自ノウハウを簡単にベクトル化し、ChatGPTに学習させた環境を作ることができました。
試行錯誤しているのですが、もっと中身をしっかり理解する必要があるなと感じ、今回はベクトルデータを格納しているChormaDBについて学んでみました。
参考にしたサイトはこちらです。
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は多くの開発者にとって魅力的な選択肢となっています。
コメント