test_upstash_vector.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import time
  2. import uuid
  3. from core.rag.datasource.vdb.upstash.upstash_vector import UpstashVector, UpstashVectorConfig
  4. from core.rag.models.document import Document
  5. from tests.integration_tests.vdb.__mock.upstashvectordb import setup_upstashvector_mock
  6. from tests.integration_tests.vdb.test_vector_store import AbstractVectorTest
  7. def get_example_text() -> str:
  8. return "test_text"
  9. def get_example_document(doc_id: str) -> Document:
  10. doc = Document(
  11. page_content=get_example_text(),
  12. metadata={
  13. "doc_id": doc_id,
  14. "doc_hash": doc_id,
  15. "document_id": doc_id,
  16. "dataset_id": doc_id,
  17. },
  18. )
  19. return doc
  20. class UpstashVectorTest(AbstractVectorTest):
  21. def __init__(self):
  22. super().__init__()
  23. self.vector = UpstashVector(
  24. collection_name="test_collection",
  25. config=UpstashVectorConfig(
  26. url="your-server-url",
  27. token="your-access-token",
  28. ),
  29. )
  30. self.example_embedding = [1.001 * i for i in range(self.vector._get_index_dimension())]
  31. def add_texts(self) -> list[str]:
  32. batch_size = 1
  33. documents = [get_example_document(doc_id=str(uuid.uuid4())) for _ in range(batch_size)]
  34. embeddings = [self.example_embedding] * batch_size
  35. self.vector.add_texts(documents=documents, embeddings=embeddings)
  36. return [doc.metadata["doc_id"] for doc in documents]
  37. def get_ids_by_metadata_field(self):
  38. print("doc_id", self.example_doc_id)
  39. ids = self.vector.get_ids_by_metadata_field(key="document_id", value=self.example_doc_id)
  40. assert len(ids) != 0
  41. def run_all_tests(self):
  42. self.create_vector()
  43. time.sleep(1)
  44. self.search_by_vector()
  45. self.text_exists()
  46. self.get_ids_by_metadata_field()
  47. added_doc_ids = self.add_texts()
  48. self.delete_by_ids(added_doc_ids + [self.example_doc_id])
  49. self.delete_vector()
  50. def test_upstash_vector(setup_upstashvector_mock):
  51. UpstashVectorTest().run_all_tests()