Chroma : 概要 (README) (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/23/2023 (0.4.12)
* 本ページは、chroma-core/chroma レポジトリの以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
クラスキャット 人工知能 研究開発支援サービス
◆ クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
Chroma : 概要 (README)
Chroma – オープンソースの埋め込みデータベース。
メモリを使用した Python or JavaScript LLM アプリケーションを構築する最速の方法です!
pip install chromadb # python client
# for javascript, npm install chromadb!
# for client-server mode, chroma run --path /chroma_db_path
コア API はわずか 4 つの関数です :
import chromadb
# setup Chroma in-memory, for easy prototyping. Can add persistence easily!
client = chromadb.Client()
# Create collection. get_collection, get_or_create_collection, delete_collection also available!
collection = client.create_collection("all-my-documents")
# Add docs to the collection. Can also update and delete. Row-based API coming soon!
collection.add(
documents=["This is document1", "This is document2"], # we handle tokenization, embedding, and indexing automatically. You can skip that and add your own embeddings as well
metadatas=[{"source": "notion"}, {"source": "google-docs"}], # filter on these!
ids=["doc1", "doc2"], # unique for each doc
)
# Query/search 2 most similar results. You can also .get by id
results = collection.query(
query_texts=["This is a query document"],
n_results=2,
# where={"metadata_field": "is_equal_to_this"}, # optional filter
# where_document={"$contains":"search_string"} # optional filter
)
特徴
- 単純 : 完全に型付けされ、完全にテストされ、完全に文書化されています == ハピネス
- 統合 : 🦜️🔗 LangChain (python と js), 🦙 LlamaIndex and more soon
- Dev, Test, Prod : python ノートブックで実行する同じ API がクラスタにスケールします。
- リッチな機能 : クエリー, フィルタリング, 密度推定, 等
- フリー & オープンソース : Apache 2.0 Licensed
ユースケース: ChatGPT for ______
例えば、”Chat your data” ユースケース :
- ドキュメントをデータベースに追加します。貴方自身のドキュメントやドキュメント関数を渡したり、Chroma にそれらを埋め込ませることもできます。
- 自然言語で関連ドキュメントをクエリーします。
- 追加の要約や分析のために GPT3 のような LLM のコンテキストウィンドウにドキュメントを組み立てます。
埋め込み
埋め込みとは何でしょう?
- OpenAI のガイド を読んでください。
- リテラル : 何かを埋め込むとそれを画像/テキスト/音声から数値のリストに変換します。🖼️ or 📄 => [1.2, 2.1, ….]. このプロセスはドキュメントを機械学習モデルに「理解可能」にします。
- By analogy : 埋め込みはドキュメントのエッセンスを表現します。これは同じエッセンスを持つドキュメントとクエリーが互いに「近く」にあることを可能にし、したがって簡単に見つけられます。
- テクニカル : 埋め込みは、深層ニューラルネットワークの層におけるドキュメントの潜在空間の位置です。データを埋め込むために特に訓練されたモデルについては、これは最後の層です。
- 小さな例 : “famous bridge in San Francisco” (サンフランシスコの有名な橋) に対する写真を検索するとします。このクエリーを埋め込みそれを写真とそのメタデータの埋め込みと比較することにより – ゴールデン・ゲート・ブリッジの写真を返すはずです。
埋め込みデータベース (ベクトルデータベース とも呼ばれます) は埋め込みをストアして、従来のデータベースのように部分文字列によるのではなく最近傍により検索することを可能にします。デフォルトでは、Chroma は Sentence Transformers を使用して埋め込みますが、OpenAI 埋め込み, Cohere (多言語) 埋め込みや独自のものを利用することもできます。
Get involved
(訳注: 原文 参照)
ライセンス
(訳注: 原文 参照)
以上