TL; DR:さまざまな検索クエリを使用して、Mongodb AtlasバックエンドでハッキングされたWebアプリ。
アプリケーションで優れたユーザー検索エクスペリエンスを提供することは難しい場合がありますが、そうである必要はありません。
このアプリケーションは、映画の運用データセットでMongoDBで利用可能ないくつかの検索手法を組み合わせています。 MongoDBは、JSONのような構造の構造化および半構造化データの強力なトランザクションおよび分析機能で知られる非常に人気のあるドキュメントデータベースです。同じプラットフォームとクエリ言語での関連性検索とセマンティックベクトル検索の追加は、非常に簡単で簡単に使用できます。ベクトルデータベースとして、テキスト、画像、オーディオなどの非構造化データをベクトル埋め込み(高次元ベクトル)に保存して、同様のオブジェクトを迅速に見つけて取得しやすくします。
MongoDB )、Lucene )との関連性検索、text-embedding-ada-002 )、clip-ViT-B-32 )、 Atlas Searchを使用すると、オープンソースのLuceneインデックスに基づいて、関連性の検索機能とスコアリング機能が可能になります。ここでは、それを使用して、言語サポートとタイプミスの修正で関連する映画を検索します。
各映画のテキストプロットは、Openaiの埋め込みAPIを介して実行され、それらのtext-embedding-ada-002埋め込みはMongodbに保存されます。ユーザーのプロンプトは埋め込まれており、同様のコンテンツに対してVectorデータベースでクエリするために使用されます。入力で検索するか、既存の映画のプロットに基づいて類似性検索を行うことができます。 
各映画のポスター画像はclip-ViT-B-32によって解釈されます。これらの画像の埋め込みはMongodbに保存されます。ユーザーは、クエリに似たポスター画像を備えた映画を見つけることができます。 
ドキュメント構造は次のように見えます。青には、フィールド、ネストされたオブジェクト、および動作データを備えた配列があります。青は、データベース検索とATLAS検索関連の検索でクエリされています。このプロジェクトは、Yellowのフィールドを追加します。AtlasVectorSearchで照会された映画ポスター、Ada Openaiテキストの埋め込み、クリップ画像の埋め込みです。

python3とpipが必要です。
python3 --version
python3 -m ensurepip --upgrade
pip3 install -r requirements.txt
MongoDB Atlasクラスターが必要です。これは、cloud.mongodb.comで作成された無料のクラスターです。データベースアクセスとネットワークアクセスにより、データベースに接続できるようにします。ノートフリークラスターにはサイズとパフォーマンスの制限があります。これは、より多くのデータを備えた小さな有料クラスターで自由に実行してください。
いくつかのローカル環境変数を設定する必要があります。テンプレートは.env.exampleです。これは、ローカル.envファイルにコピーできます。
MDB_CONN=<YOUR MongoDB Atlas connection string>
DB="sample_mflix"
COLL="embedded_movies"
OPENAI_API_KEY=<YOUR OpenAI API key>
mdb-search-dataレポをクローンします。
そこには、バックアップから復元するか、埋め込みをローカルに生成するという2つのオプションが提供されます。バックアップからの復元には1分もかかりません。
ATLASでは、クラスタービューSearch tabで、次のJSON構成を入力します。 defaultインデックス名を使用して、 embedded_moviesコレクションで作成してください。これは、フィールドでの動的なフルテキスト検索を可能にする魔法であり、ベクトル検索インデックスを有効にします。データコピーは必要ありません:o
{
"mappings": {
"dynamic": true,
"fields": {
"plot_embedding": {
"dimensions": 1536,
"similarity": "cosine",
"type": "knnVector"
},
"poster_embedding": {
"dimensions": 512,
"similarity": "cosine",
"type": "knnVector"
}
}
}
}
これは、Flask Python3 Web-Appです。
このようなフラスコアプリを開始します
flask --app app run
または、ヘルパーを使用すると、このようなPythonを使用してください
python app.py
http://localhost:8080でWebアプリにアクセスできます。
あなたは今できます:
MLと埋め込みモデルを信頼してください。これらの写真が似ている理由を推測できますか?