Files
wehub-resource-sync 86db9aae8e
Documentation / build (push) Has been cancelled
Documentation / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:34:55 +08:00

121 lines
4.6 KiB
Python

""" Provides a set of short tests for specific vector DB. """
import os
import pytest
import time
from llmware.library import Library
from llmware.embeddings import EmbeddingHandler
from llmware.exceptions import UnsupportedEmbeddingDatabaseException
from llmware.models import ModelCatalog
from llmware.retrieval import Query
from llmware.setup import Setup
from llmware.configs import LLMWareConfig
from llmware.resources import CloudBucketManager
from tests.embeddings.utils import qdrant_installed
def test_unsupported_embedding_db():
embedding_db = "milvusXYZ" # Bad Embedding DB Name
with pytest.raises(UnsupportedEmbeddingDatabaseException) as excinfo:
embedding_handler = EmbeddingHandler(library=None)
embedding_summary = embedding_handler.create_new_embedding(embedding_db=embedding_db, model=None)
assert str(excinfo.value) == f"'{embedding_db}' is not a supported vector embedding database"
def test_milvus_embedding_and_query():
sample_files_path = Setup().load_sample_files()
library = Library().create_new_library("test_embedding_milvus")
library.add_files(os.path.join(sample_files_path,"SmallLibrary"))
results = generic_embedding_and_query(library, "milvus")
assert len(results) > 0
library.delete_library(confirm_delete=True)
def test_neo4j_embedding_and_query():
sample_files_path = Setup().load_sample_files()
library = Library().create_new_library("test_embedding_neo4j")
library.add_files(os.path.join(sample_files_path,"SmallLibrary"))
results = generic_embedding_and_query(library, "neo4j")
assert len(results) > 0
library.delete_library(confirm_delete=True)
def test_chromadb_embedding_and_query():
sample_files_path = Setup().load_sample_files()
library = Library().create_new_library("test_embedding_neo4j")
library.add_files(os.path.join(sample_files_path,"SmallLibrary"))
results = generic_embedding_and_query(library, "chromadb")
assert len(results) > 0
library.delete_library(confirm_delete=True)
def test_faiss_embedding_and_query():
sample_files_path = Setup().load_sample_files()
library = Library().create_new_library("test_embedding_faiss")
library.add_files(os.path.join(sample_files_path,"SmallLibrary"))
results = generic_embedding_and_query(library, "faiss")
assert len(results) > 0
library.delete_library(confirm_delete=True)
def test_lancedb_embedding_and_query():
sample_files_path = Setup().load_sample_files()
library = Library().create_new_library("test_embedding_lancedb")
library.add_files(os.path.join(sample_files_path,"SmallLibrary"))
results = generic_embedding_and_query(library, "lancedb")
assert len(results) > 0
library.delete_library(confirm_delete=True)
@pytest.mark.skipif(not qdrant_installed(), reason="Qdrant client is not installed")
def test_qdrant_embedding_and_query():
os.environ["USER_MANAGED_QDRANT_LOCATION"] = ":memory:"
sample_files_path = Setup().load_sample_files()
library = Library().create_new_library("test_embedding_qdrant")
library.add_files(os.path.join(sample_files_path,"SmallLibrary"))
results = generic_embedding_and_query(library, "qdrant")
assert len(results) > 0
library.delete_library(confirm_delete=True)
# def test_pinecone_embedding_and_query():
# with pytest.raises(ImportError) as excinfo:
# library = None
# results = generic_embedding_and_query(library, "pinecone")
# assert 'pip install pinecone-client' in str(excinfo.value)
# def test_pinecone_embedding_and_query():
# sample_files_path = Setup().load_sample_files()
# library = Library().create_new_library("test_embedding")
# library.add_files(os.path.join(sample_files_path,"SmallLibrary"))
# os.environ["PINECONE_API_KEY"] = "abeab29e-7a48-426b-b17a-c74567720876"
# os.environ["PINECONE_ENVIRONMENT"] = "gcp-starter"
# results = generic_embedding_and_query(library, "pinecone")
# assert len(results) > 0
# library.delete_library(confirm_delete=True)
def generic_embedding_and_query(library, embedding_db):
# Run the embeddings (only of first 3 docs )
model=ModelCatalog().load_model("mini-lm-sbert")
embedding_handler = EmbeddingHandler(library=library)
embedding_summary = embedding_handler.create_new_embedding(embedding_db=embedding_db, model=model,doc_ids=[1, 2, 3, 4, 5])
# Do a query
query = "pact"
query_results = Query(library).semantic_query(query, result_count=5)
# Delete the embedding
embedding_handler.delete_index(embedding_db=embedding_db,embedding_dims=embedding_summary["embedding_dims"], model_name=model.model_name)
return query_results