Skip to content

Python: vector store simplificatons and some cleanup #12274

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions python/samples/concepts/memory/complex_memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
WeaviateCollection,
)
from semantic_kernel.data import VectorStoreRecordCollection, vectorstoremodel
from semantic_kernel.data.definitions import VectorStoreField
from semantic_kernel.data.vectors import SearchType, VectorSearch
from semantic_kernel.data._definitions import VectorStoreField
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Curious about the rationale to change it from .definitions -> ._definitions? From a "public API" perspective, it feels weird to have the underscore.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rethought that part, I really like it now!

from semantic_kernel.data._vectors import SearchType, VectorSearch

# This is a rather complex sample, showing how to use the vector store
# with a number of different collections.
Expand All @@ -47,15 +47,15 @@ class DataModel:
content: Annotated[str, VectorStoreField("data", is_full_text_indexed=True)]
embedding: Annotated[
str | None,
VectorStoreField("vector", dimensions=1536, type_="float"),
VectorStoreField("vector", dimensions=1536, type="float"),
] = None
id: Annotated[
str,
VectorStoreField(
"key",
),
] = field(default_factory=lambda: str(uuid4()))
tag: Annotated[str | None, VectorStoreField("data", type_="str", is_indexed=True)] = None
tag: Annotated[str | None, VectorStoreField("data", type="str", is_indexed=True)] = None

def __post_init__(self, **kwargs):
if self.embedding is None:
Expand Down Expand Up @@ -172,7 +172,7 @@ async def main(collection: str, use_azure_openai: bool):
keys = await record_collection.upsert(records)
print(f" Upserted {keys=}")
print_with_color("Getting records!", Colors.CBLUE)
results = await record_collection.get(top=10, order_by={"field": "content"})
results = await record_collection.get(top=10, order_by="content")
if results:
[print_record(record=result) for result in results]
else:
Expand Down
2 changes: 1 addition & 1 deletion python/samples/concepts/memory/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from typing import TypeVar

from samples.concepts.resources.utils import Colors, print_with_color
from semantic_kernel.data.vectors import VectorSearchResult
from semantic_kernel.data._vectors import VectorSearchResult

_T = TypeVar("_T")

Expand Down
1,417 changes: 708 additions & 709 deletions python/samples/getting_started/third_party/postgres-memory.ipynb

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions python/semantic_kernel/connectors/memory/azure_ai_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,12 @@
from pydantic import SecretStr, ValidationError

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import FieldTypes, VectorStoreCollectionDefinition
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import FieldTypes, VectorStoreCollectionDefinition
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
TModel,
VectorSearch,
Expand Down Expand Up @@ -432,12 +433,11 @@ async def _inner_get(
if options is not None:
ordering = []
if options.order_by:
order_by = options.order_by if isinstance(options.order_by, Sequence) else [options.order_by]
for order in order_by:
if order.field not in self.definition.storage_names:
logger.warning(f"Field {order.field} not in data model, skipping.")
for field, asc_flag in options.order_by.items():
if field not in self.definition.storage_names:
logger.warning(f"Field {field} not in data model, skipping.")
continue
ordering.append(order.field if order.ascending else f"{order.field} desc")
ordering.append(field if asc_flag else f"{field} desc")

result = await client.search(
search_text="*",
Expand Down
9 changes: 5 additions & 4 deletions python/semantic_kernel/connectors/memory/azure_cosmos_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@
MongoDBAtlasCollection,
MongoDBAtlasStore,
)
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import FieldTypes, VectorStoreCollectionDefinition
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import FieldTypes, VectorStoreCollectionDefinition
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
TModel,
VectorSearch,
Expand Down
9 changes: 5 additions & 4 deletions python/semantic_kernel/connectors/memory/chroma.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
from chromadb.config import Settings

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
TModel,
VectorSearch,
Expand Down
14 changes: 10 additions & 4 deletions python/semantic_kernel/connectors/memory/faiss.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,16 @@

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.connectors.memory.in_memory import IN_MEMORY_SCORE_KEY, InMemoryCollection, InMemoryStore, TKey
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import SearchType, TModel, VectorSearchOptions, VectorSearchResult
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
IndexKind,
SearchType,
TModel,
VectorSearchOptions,
VectorSearchResult,
)
from semantic_kernel.exceptions import VectorStoreInitializationException, VectorStoreOperationException
from semantic_kernel.exceptions.vector_store_exceptions import VectorStoreModelException

Expand Down
9 changes: 5 additions & 4 deletions python/semantic_kernel/connectors/memory/in_memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@
from typing_extensions import override

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DISTANCE_FUNCTION_DIRECTION_HELPER, DistanceFunction
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DISTANCE_FUNCTION_DIRECTION_HELPER,
DistanceFunction,
GetFilteredRecordOptions,
SearchType,
TModel,
Expand Down
8 changes: 4 additions & 4 deletions python/semantic_kernel/connectors/memory/mongodb.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
from pymongo.operations import SearchIndexModel

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
SearchType,
TModel,
Expand Down
8 changes: 4 additions & 4 deletions python/semantic_kernel/connectors/memory/pinecone.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
from pydantic import SecretStr, ValidationError

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
SearchType,
TModel,
Expand Down
9 changes: 5 additions & 4 deletions python/semantic_kernel/connectors/memory/postgres.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
from pydantic_settings import SettingsConfigDict

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import FieldTypes, VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import FieldTypes, VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
TModel,
VectorSearch,
Expand Down
9 changes: 5 additions & 4 deletions python/semantic_kernel/connectors/memory/qdrant.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,12 @@
from typing_extensions import override

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
TModel,
VectorSearch,
Expand Down
9 changes: 5 additions & 4 deletions python/semantic_kernel/connectors/memory/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@
from redisvl.schema import StorageType

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import FieldTypes, VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import FieldTypes, VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
TModel,
VectorSearch,
Expand Down
10 changes: 6 additions & 4 deletions python/semantic_kernel/connectors/memory/sql_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
from pydantic import SecretStr, ValidationError, field_validator

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DISTANCE_FUNCTION_DIRECTION_HELPER, DistanceFunction, IndexKind
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DISTANCE_FUNCTION_DIRECTION_HELPER,
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
VectorSearch,
VectorSearchOptions,
Expand Down
9 changes: 5 additions & 4 deletions python/semantic_kernel/connectors/memory/weaviate.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@
from weaviate.exceptions import WeaviateClosedClientError, WeaviateConnectionError

from semantic_kernel.connectors.ai.embedding_generator_base import EmbeddingGeneratorBase
from semantic_kernel.data.const import DistanceFunction, IndexKind
from semantic_kernel.data.definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data.search import KernelSearchResults
from semantic_kernel.data.vectors import (
from semantic_kernel.data._definitions import VectorStoreCollectionDefinition, VectorStoreField
from semantic_kernel.data._search import KernelSearchResults
from semantic_kernel.data._vectors import (
DistanceFunction,
GetFilteredRecordOptions,
IndexKind,
SearchType,
TModel,
VectorSearch,
Expand Down
8 changes: 1 addition & 7 deletions python/semantic_kernel/connectors/search/brave.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,7 @@
from pydantic import Field, SecretStr, ValidationError

from semantic_kernel.connectors.search.utils import SearchLambdaVisitor
from semantic_kernel.data.search import (
KernelSearchResults,
SearchOptions,
TextSearch,
TextSearchResult,
TSearchResult,
)
from semantic_kernel.data._search import KernelSearchResults, SearchOptions, TextSearch, TextSearchResult, TSearchResult
from semantic_kernel.exceptions import ServiceInitializationError, ServiceInvalidRequestError
from semantic_kernel.kernel_pydantic import KernelBaseModel, KernelBaseSettings
from semantic_kernel.kernel_types import OptionalOneOrList
Expand Down
8 changes: 1 addition & 7 deletions python/semantic_kernel/connectors/search/google.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,7 @@
from pydantic import Field, SecretStr, ValidationError

from semantic_kernel.connectors.search.utils import SearchLambdaVisitor
from semantic_kernel.data.search import (
KernelSearchResults,
SearchOptions,
TextSearch,
TextSearchResult,
TSearchResult,
)
from semantic_kernel.data._search import KernelSearchResults, SearchOptions, TextSearch, TextSearchResult, TSearchResult
from semantic_kernel.exceptions import ServiceInitializationError, ServiceInvalidRequestError
from semantic_kernel.kernel_pydantic import KernelBaseModel, KernelBaseSettings
from semantic_kernel.kernel_types import OptionalOneOrList
Expand Down
23 changes: 13 additions & 10 deletions python/semantic_kernel/data/__init__.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,31 @@
# Copyright (c) Microsoft. All rights reserved.


from semantic_kernel.data.const import (
DEFAULT_DESCRIPTION,
DEFAULT_FUNCTION_NAME,
DISTANCE_FUNCTION_DIRECTION_HELPER,
DistanceFunction,
IndexKind,
)
from semantic_kernel.data.definitions import (
from semantic_kernel.data._definitions import (
FieldTypes,
VectorStoreCollectionDefinition,
VectorStoreField,
vectorstoremodel,
)
from semantic_kernel.data.search import (
from semantic_kernel.data._search import (
DEFAULT_DESCRIPTION,
DEFAULT_FUNCTION_NAME,
DynamicFilterFunction,
KernelSearchResults,
TextSearch,
TextSearchResult,
create_options,
default_dynamic_filter_function,
)
from semantic_kernel.data.vectors import VectorSearch, VectorSearchResult, VectorStore, VectorStoreRecordCollection
from semantic_kernel.data._vectors import (
DISTANCE_FUNCTION_DIRECTION_HELPER,
DistanceFunction,
IndexKind,
VectorSearch,
VectorSearchResult,
VectorStore,
VectorStoreRecordCollection,
)

__all__ = [
"DEFAULT_DESCRIPTION",
Expand Down
Loading
Loading