"""Test AwaDB functionality.""" from langchain.docstore.document import Document from langchain.vectorstores import AwaDB from tests.integration_tests.vectorstores.fake_embeddings import FakeEmbeddings def test_awadb() -> None: """Test end to end construction and search.""" texts = ["foo", "bar", "baz"] docsearch = AwaDB.from_texts( table_name="test_awadb", texts=texts, embedding=FakeEmbeddings() ) output = docsearch.similarity_search("foo", k=1) assert output == [Document(page_content="foo")] def test_awadb_with_metadatas() -> None: """Test end to end construction and search.""" texts = ["foo", "bar", "baz"] metadatas = [{"page": i} for i in range(len(texts))] docsearch = AwaDB.from_texts( table_name="test_awadb", texts=texts, embedding=FakeEmbeddings(), metadatas=metadatas, ) output = docsearch.similarity_search("foo", k=1) assert output == [Document(page_content="foo", metadata={"page": 0})] def test_awadb_with_metadatas_with_scores() -> None: """Test end to end construction and scored search.""" texts = ["foo", "bar", "baz"] metadatas = [{"page": str(i)} for i in range(len(texts))] docsearch = AwaDB.from_texts( table_name="test_awadb", texts=texts, embedding=FakeEmbeddings(), metadatas=metadatas, ) output = docsearch.similarity_search_with_score("foo", k=1) assert output == [(Document(page_content="foo", metadata={"page": "0"}), 0.0)] def test_awadb_add_texts() -> None: """Test end to end adding of texts.""" # Create initial doc store. texts = ["foo", "bar", "baz"] docsearch = AwaDB.from_texts( table_name="test_awadb", texts=texts, embedding=FakeEmbeddings() ) # Test adding a similar document as before. docsearch.add_texts(["foo"]) output = docsearch.similarity_search("foo", k=2) assert output == [Document(page_content="foo"), Document(page_content="foo")]