Spaces:
Running
Running
"""Test Milvus functionality.""" | |
from typing import List, Optional | |
from langchain.docstore.document import Document | |
from langchain.vectorstores import Milvus | |
from tests.integration_tests.vectorstores.fake_embeddings import ( | |
FakeEmbeddings, | |
fake_texts, | |
) | |
def _milvus_from_texts( | |
metadatas: Optional[List[dict]] = None, drop: bool = True | |
) -> Milvus: | |
return Milvus.from_texts( | |
fake_texts, | |
FakeEmbeddings(), | |
metadatas=metadatas, | |
connection_args={"host": "127.0.0.1", "port": "19530"}, | |
drop_old=drop, | |
) | |
def test_milvus() -> None: | |
"""Test end to end construction and search.""" | |
docsearch = _milvus_from_texts() | |
output = docsearch.similarity_search("foo", k=1) | |
assert output == [Document(page_content="foo")] | |
def test_milvus_with_score() -> None: | |
"""Test end to end construction and search with scores and IDs.""" | |
texts = ["foo", "bar", "baz"] | |
metadatas = [{"page": i} for i in range(len(texts))] | |
docsearch = _milvus_from_texts(metadatas=metadatas) | |
output = docsearch.similarity_search_with_score("foo", k=3) | |
docs = [o[0] for o in output] | |
scores = [o[1] for o in output] | |
assert docs == [ | |
Document(page_content="foo", metadata={"page": 0}), | |
Document(page_content="bar", metadata={"page": 1}), | |
Document(page_content="baz", metadata={"page": 2}), | |
] | |
assert scores[0] < scores[1] < scores[2] | |
def test_milvus_max_marginal_relevance_search() -> None: | |
"""Test end to end construction and MRR search.""" | |
texts = ["foo", "bar", "baz"] | |
metadatas = [{"page": i} for i in range(len(texts))] | |
docsearch = _milvus_from_texts(metadatas=metadatas) | |
output = docsearch.max_marginal_relevance_search("foo", k=2, fetch_k=3) | |
assert output == [ | |
Document(page_content="foo", metadata={"page": 0}), | |
Document(page_content="baz", metadata={"page": 2}), | |
] | |
def test_milvus_add_extra() -> None: | |
"""Test end to end construction and MRR search.""" | |
texts = ["foo", "bar", "baz"] | |
metadatas = [{"page": i} for i in range(len(texts))] | |
docsearch = _milvus_from_texts(metadatas=metadatas) | |
docsearch.add_texts(texts, metadatas) | |
output = docsearch.similarity_search("foo", k=10) | |
assert len(output) == 6 | |
def test_milvus_no_drop() -> None: | |
"""Test end to end construction and MRR search.""" | |
texts = ["foo", "bar", "baz"] | |
metadatas = [{"page": i} for i in range(len(texts))] | |
docsearch = _milvus_from_texts(metadatas=metadatas) | |
del docsearch | |
docsearch = _milvus_from_texts(metadatas=metadatas, drop=False) | |
output = docsearch.similarity_search("foo", k=10) | |
assert len(output) == 6 | |
# if __name__ == "__main__": | |
# test_milvus() | |
# test_milvus_with_score() | |
# test_milvus_max_marginal_relevance_search() | |
# test_milvus_add_extra() | |
# test_milvus_no_drop() | |