使用するには? VectorDBクラスと美しいUIを介してその機能にアクセスするには、次の手順に従ってください。
まず、リポジトリをローカルマシンにクローンします。
git clone https://github.com/rishiraj/spanking.git
cd spanking直感的なWebインターフェイスを介してVectorデータベースを管理するには、提供されたapp.pyスクリプトを実行できます。
python app.pyこれにより、ローカルWebサーバーが開始されます。その後、Webブラウザでhttp://127.0.0.1:5000に移動することにより、UIにアクセスできます。
VectorDBクラスプログラムでコードの操作を好む場合は、 VectorDBクラスと直接やり取りできます。方法は次のとおりです。
インスタンスを作成します:
from spanking import VectorDB
vector_db = VectorDB ( model_name = 'BAAI/bge-base-en-v1.5' )オプションで、その名前をコンストラクターに渡すことにより、異なる事前訓練を受けた文変圧器モデルを指定できます。
テキストを追加:
texts = [ "i eat pizza" , "i play chess" , "i drive bus" ]
vector_db . add_texts ( texts )これにより、テキストを埋め込みにエンコードし、データベースに保存します。
同様のテキストや画像を検索します。
text_query = "we play football"
text_results = vector_db . search ( text_query , top_k = 2 , type = 'text' )
print ( "Text search results:" )
for text , similarity in text_results :
print ( f"Text: { text } , Similarity: { similarity } " )
image_url = "https://example.com/image.jpg"
image_results = vector_db . search ( image_url , top_k = 2 , type = 'image' )
print ( " n Image search results:" )
for text , similarity in image_results :
print ( f"Text: { text } , Similarity: { similarity } " )これにより、Cosineの類似性に基づいて、トップ2の最も類似したテキストまたは画像をクエリに取得します。 search方法は、各タプルにテキストとその類似性スコアが含まれるタプルのリストを返します。 typeパラメーター(テキスト検索の'text' 、画像検索の'image' )を使用して検索タイプを指定できます。
テキストを削除します:
index = 1
vector_db . delete_text ( index )これにより、指定されたインデックスにテキストと対応する埋め込みが削除されます。
テキストの更新:
index = 0
new_text = "i enjoy eating pizza"
vector_db . update_text ( index , new_text )これにより、新しいテキストを使用して、指定されたインデックスにテキストと対応する埋め込みが更新されます。
データベースを保存します:
vector_db . save ( 'vector_db.pkl' )これにより、 VectorDBインスタンスの現在の状態を「vector_db.pkl」という名前のファイルに保存します。
データベースをロードします。
vector_db = VectorDB . load ( 'vector_db.pkl' )これにより、 'vector_db.pkl'という名前のファイルからVectorDBインスタンスをロードして返します。
データフレームに変換:
df = vector_db . to_df ()これにより、 VectorDBインスタンスの現在の状態をPandasデータフレームに変換します。
保存されたテキストを反復します:
for text in vector_db :
print ( text )インデックスによる個々のテキストにアクセスします:
index = 2
text = vector_db [ index ]
print ( text )テキストの数を取得します:
num_texts = len ( vector_db )
print ( num_texts )これがあなたがどのように使用できるかを示す例を示しますか? VectorDBクラス:
from spanking import VectorDB
vector_db = VectorDB ()
# Add texts to the database
texts = [ "i eat pizza" , "i play chess" , "i drive bus" ]
vector_db . add_texts ( texts )
# Search for similar texts
query = "we play football"
top_results = vector_db . search ( query , top_k = 2 )
print ( "Top results:" )
for text , similarity in top_results :
print ( f"Text: { text } , Similarity: { similarity } " )
# Update a text
vector_db . update_text ( 1 , "i enjoy playing chess" )
# Delete a text
vector_db . delete_text ( 2 )
# Save the database
vector_db . save ( 'vector_db.pkl' )
# Load the database
loaded_vector_db = VectorDB . load ( 'vector_db.pkl' )
# Iterate over the stored texts in the loaded database
print ( " n Stored texts in the loaded database:" )
for text in loaded_vector_db :
print ( text )
# Convert to dataframe
df = loaded_vector_db . to_df ()
print ( df . head ())この例は、作成方法を示していますか? VectorDBインスタンス、テキストを追加し、同様のテキストを検索し、テキストを更新および削除し、保存されたテキストを反復します。