Para usar el? Clase VectorDB y acceder a su funcionalidad a través de una hermosa interfaz de usuario, siga estos pasos:
Primero, clone el repositorio de su máquina local:
git clone https://github.com/rishiraj/spanking.git
cd spanking Para administrar su base de datos vectorial a través de una interfaz web intuitiva, puede ejecutar el script app.py proporcionado:
python app.py Esto iniciará un servidor web local. Luego puede acceder a la interfaz de usuario navegando a http://127.0.0.1:5000 en su navegador web.
VectorDB programáticamente Si prefiere trabajar con código, puede interactuar con la clase VectorDB directamente. Aquí está como:
Crear una instancia:
from spanking import VectorDB
vector_db = VectorDB ( model_name = 'BAAI/bge-base-en-v1.5' )Opcionalmente, puede especificar un modelo de transformador de oración previamente capacitado diferente pasando su nombre al constructor.
Agregar textos:
texts = [ "i eat pizza" , "i play chess" , "i drive bus" ]
vector_db . add_texts ( texts )Esto codificará los textos en incrustaciones y los almacenará en la base de datos.
Busque textos o imágenes similares:
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 } " ) Esto recuperará los 2 textos o imágenes más similares a la consulta en función de la similitud de coseno. El método search devuelve una lista de tuplas, donde cada tupla contiene el texto y su puntaje de similitud. Puede especificar el tipo de búsqueda usando el parámetro type ( 'text' para la búsqueda de texto y 'image' para la búsqueda de imágenes).
Eliminar un texto:
index = 1
vector_db . delete_text ( index )Esto eliminará el texto y su incrustación correspondiente en el índice especificado.
Actualizar un texto:
index = 0
new_text = "i enjoy eating pizza"
vector_db . update_text ( index , new_text )Esto actualizará el texto y su incrustación correspondiente en el índice especificado con el nuevo texto.
Guarde la base de datos:
vector_db . save ( 'vector_db.pkl' ) Esto guardará el estado actual de la instancia VectorDB en un archivo llamado 'vector_db.pkl'.
Cargue la base de datos:
vector_db = VectorDB . load ( 'vector_db.pkl' ) Esto cargará la instancia VectorDB desde el archivo llamado 'vector_db.pkl' y la devolverá.
Convertir a DataFrame:
df = vector_db . to_df () Esto convertirá el estado actual de la instancia VectorDB en un Pandas DataFrame.
Iterar sobre textos almacenados:
for text in vector_db :
print ( text )Acceder a textos individuales por índice:
index = 2
text = vector_db [ index ]
print ( text )Obtenga el número de textos:
num_texts = len ( vector_db )
print ( num_texts ) ¿Aquí hay un ejemplo para demostrar cómo puede usar el? Clase 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 ()) Este ejemplo demuestra cómo crear un? Instancia VectorDB , agregar textos, buscar textos similares, actualizar y eliminar textos, e iterar sobre los textos almacenados.