Implement delete interface of vector store on AnalyticDB (#7170)

Hi, there
  This pull request contains two commit:
**1. Implement delete interface with optional ids parameter on
AnalyticDB.**
**2. Allow customization of database connection behavior by exposing
engine_args parameter in interfaces.**
- This commit adds the `engine_args` parameter to the interfaces,
allowing users to customize the behavior of the database connection. The
`engine_args` parameter accepts a dictionary of additional arguments
that will be passed to the create_engine function. Users can now modify
various aspects of the database connection, such as connection pool size
and recycle time. This enhancement provides more flexibility and control
to users when interacting with the database through the exposed
interfaces.

This commit is related to VectorStores @rlancemartin @eyurtsev 

Thank you for your attention and consideration.
This commit is contained in:
Richy Wang
2023-07-06 04:01:00 +08:00
committed by GitHub
parent 3ae11b7582
commit cab7d86f23
2 changed files with 86 additions and 2 deletions

View File

@@ -47,6 +47,22 @@ def test_analyticdb() -> None:
assert output == [Document(page_content="foo")]
def test_analyticdb_with_engine_args() -> None:
engine_args = {"pool_recycle": 3600, "pool_size": 50}
"""Test end to end construction and search."""
texts = ["foo", "bar", "baz"]
docsearch = AnalyticDB.from_texts(
texts=texts,
collection_name="test_collection",
embedding=FakeEmbeddingsWithAdaDimension(),
connection_string=CONNECTION_STRING,
pre_delete_collection=True,
engine_args=engine_args,
)
output = docsearch.similarity_search("foo", k=1)
assert output == [Document(page_content="foo")]
def test_analyticdb_with_metadatas() -> None:
"""Test end to end construction and search."""
texts = ["foo", "bar", "baz"]
@@ -126,3 +142,25 @@ def test_analyticdb_with_filter_no_match() -> None:
)
output = docsearch.similarity_search_with_score("foo", k=1, filter={"page": "5"})
assert output == []
def test_analyticdb_delete() -> None:
"""Test end to end construction and search."""
texts = ["foo", "bar", "baz"]
ids = ["fooid", "barid", "bazid"]
metadatas = [{"page": str(i)} for i in range(len(texts))]
docsearch = AnalyticDB.from_texts(
texts=texts,
collection_name="test_collection_delete",
embedding=FakeEmbeddingsWithAdaDimension(),
metadatas=metadatas,
connection_string=CONNECTION_STRING,
ids=ids,
pre_delete_collection=True,
)
output = docsearch.similarity_search_with_score("foo", k=1, filter={"page": "2"})
print(output)
assert output == [(Document(page_content="baz", metadata={"page": "2"}), 4.0)]
docsearch.delete(ids=ids)
output = docsearch.similarity_search_with_score("foo", k=1, filter={"page": "2"})
assert output == []