mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-13 18:42:36 +00:00
[WIP] Configurable distance_metric:
- Configurable distance_metric enabled for PGVector. - Added plumbing to support configuring more distance metrics for each vector provider.
This commit is contained in:
parent
658fb2c777
commit
9658581cf7
11 changed files with 187 additions and 18 deletions
|
|
@ -105,6 +105,7 @@ class VectorIORouter(VectorIO):
|
|||
embedding_model = extra.get("embedding_model")
|
||||
embedding_dimension = extra.get("embedding_dimension")
|
||||
provider_id = extra.get("provider_id")
|
||||
distance_metric = extra.get("distance_metric")
|
||||
|
||||
# Use default embedding model if not specified
|
||||
if (
|
||||
|
|
@ -154,6 +155,7 @@ class VectorIORouter(VectorIO):
|
|||
provider_id=provider_id,
|
||||
provider_vector_store_id=vector_store_id,
|
||||
vector_store_name=params.name,
|
||||
distance_metric=distance_metric,
|
||||
)
|
||||
provider = await self.routing_table.get_provider_impl(registered_vector_store.identifier)
|
||||
|
||||
|
|
@ -162,6 +164,8 @@ class VectorIORouter(VectorIO):
|
|||
params.model_extra = {}
|
||||
params.model_extra["provider_vector_store_id"] = registered_vector_store.provider_resource_id
|
||||
params.model_extra["provider_id"] = registered_vector_store.provider_id
|
||||
if distance_metric is not None:
|
||||
params.model_extra["distance_metric"] = distance_metric
|
||||
if embedding_model is not None:
|
||||
params.model_extra["embedding_model"] = embedding_model
|
||||
if embedding_dimension is not None:
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ class VectorStoresRoutingTable(CommonRoutingTableImpl):
|
|||
provider_id: str | None = None,
|
||||
provider_vector_store_id: str | None = None,
|
||||
vector_store_name: str | None = None,
|
||||
distance_metric: str | None = None,
|
||||
) -> Any:
|
||||
if provider_id is None:
|
||||
if len(self.impls_by_provider_id) > 0:
|
||||
|
|
@ -73,6 +74,7 @@ class VectorStoresRoutingTable(CommonRoutingTableImpl):
|
|||
embedding_model=embedding_model,
|
||||
embedding_dimension=embedding_dimension,
|
||||
vector_store_name=vector_store_name,
|
||||
distance_metric=distance_metric,
|
||||
)
|
||||
await self.register_object(vector_store)
|
||||
return vector_store
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue