Updated Elasticsearch configurations

This commit is contained in:
Enrico Zimuel 2025-11-10 12:31:03 +01:00
parent 3e26136879
commit 149aaa5b22
No known key found for this signature in database
GPG key ID: 6CB203F6934A69F1
8 changed files with 45 additions and 6 deletions

View file

@ -28,6 +28,7 @@ distribution_spec:
- provider_type: remote::pgvector - provider_type: remote::pgvector
- provider_type: remote::qdrant - provider_type: remote::qdrant
- provider_type: remote::weaviate - provider_type: remote::weaviate
- provider_type: remote::elasticsearch
files: files:
- provider_type: inline::localfs - provider_type: inline::localfs
safety: safety:

View file

@ -146,6 +146,14 @@ providers:
persistence: persistence:
namespace: vector_io::weaviate namespace: vector_io::weaviate
backend: kv_default backend: kv_default
- provider_id: ${env.ELASTICSEARCH_URL:+elasticsearch}
provider_type: remote::elasticsearch
config:
elasticsearch_url: ${env.ELASTICSEARCH_URL:=localhost:9200}
elasticsearch_api_key: ${env.ELASTICSEARCH_API_KEY:=}
persistence:
namespace: vector_io::elasticsearch
backend: kv_default
files: files:
- provider_id: meta-reference-files - provider_id: meta-reference-files
provider_type: inline::localfs provider_type: inline::localfs

View file

@ -146,6 +146,14 @@ providers:
persistence: persistence:
namespace: vector_io::weaviate namespace: vector_io::weaviate
backend: kv_default backend: kv_default
- provider_id: ${env.ELASTICSEARCH_URL:+elasticsearch}
provider_type: remote::elasticsearch
config:
elasticsearch_url: ${env.ELASTICSEARCH_URL:=localhost:9200}
elasticsearch_api_key: ${env.ELASTICSEARCH_API_KEY:=}
persistence:
namespace: vector_io::elasticsearch
backend: kv_default
files: files:
- provider_id: meta-reference-files - provider_id: meta-reference-files
provider_type: inline::localfs provider_type: inline::localfs

View file

@ -28,6 +28,7 @@ distribution_spec:
- provider_type: remote::pgvector - provider_type: remote::pgvector
- provider_type: remote::qdrant - provider_type: remote::qdrant
- provider_type: remote::weaviate - provider_type: remote::weaviate
- provider_type: remote::elasticsearch
files: files:
- provider_type: inline::localfs - provider_type: inline::localfs
safety: safety:

View file

@ -146,6 +146,14 @@ providers:
persistence: persistence:
namespace: vector_io::weaviate namespace: vector_io::weaviate
backend: kv_default backend: kv_default
- provider_id: ${env.ELASTICSEARCH_URL:+elasticsearch}
provider_type: remote::elasticsearch
config:
elasticsearch_api_key: ${env.ELASTICSEARCH_API_KEY:=}
elasticsearch_url: ${env.ELASTICSEARCH_URL:=localhost:9200}
persistence:
namespace: vector_io::elasticsearch
backend: kv_default
files: files:
- provider_id: meta-reference-files - provider_id: meta-reference-files
provider_type: inline::localfs provider_type: inline::localfs

View file

@ -41,6 +41,7 @@ from llama_stack.providers.remote.vector_io.pgvector.config import (
) )
from llama_stack.providers.remote.vector_io.qdrant.config import QdrantVectorIOConfig from llama_stack.providers.remote.vector_io.qdrant.config import QdrantVectorIOConfig
from llama_stack.providers.remote.vector_io.weaviate.config import WeaviateVectorIOConfig from llama_stack.providers.remote.vector_io.weaviate.config import WeaviateVectorIOConfig
from llama_stack.providers.remote.vector_io.elasticsearch.config import ElasticsearchVectorIOConfig
from llama_stack.providers.utils.kvstore.config import PostgresKVStoreConfig from llama_stack.providers.utils.kvstore.config import PostgresKVStoreConfig
from llama_stack.providers.utils.sqlstore.sqlstore import PostgresSqlStoreConfig from llama_stack.providers.utils.sqlstore.sqlstore import PostgresSqlStoreConfig
@ -126,6 +127,7 @@ def get_distribution_template(name: str = "starter") -> DistributionTemplate:
BuildProvider(provider_type="remote::pgvector"), BuildProvider(provider_type="remote::pgvector"),
BuildProvider(provider_type="remote::qdrant"), BuildProvider(provider_type="remote::qdrant"),
BuildProvider(provider_type="remote::weaviate"), BuildProvider(provider_type="remote::weaviate"),
BuildProvider(provider_type="remote::elasticsearch"),
], ],
"files": [BuildProvider(provider_type="inline::localfs")], "files": [BuildProvider(provider_type="inline::localfs")],
"safety": [ "safety": [
@ -240,6 +242,15 @@ def get_distribution_template(name: str = "starter") -> DistributionTemplate:
cluster_url="${env.WEAVIATE_CLUSTER_URL:=}", cluster_url="${env.WEAVIATE_CLUSTER_URL:=}",
), ),
), ),
Provider(
provider_id="${env.ELASTICSEARCH_URL:+elasticsearch}",
provider_type="remote::elasticsearch",
config=ElasticsearchVectorIOConfig.sample_run_config(
f"~/.llama/distributions/{name}",
elasticsearch_url="${env.ELASTICSEARCH_URL:=localhost:9200}",
elasticsearch_api_key="${env.ELASTICSEARCH_API_KEY:=}",
),
),
], ],
"files": [files_provider], "files": [files_provider],
} }

View file

@ -14,8 +14,8 @@ from llama_stack.schema_utils import json_schema_type
@json_schema_type @json_schema_type
class ElasticsearchVectorIOConfig(BaseModel): class ElasticsearchVectorIOConfig(BaseModel):
api_key: str | None = Field(description="The API key for the Elasticsearch instance", default=None) elasticsearch_api_key: str | None = Field(description="The API key for the Elasticsearch instance", default=None)
hosts: str | None = Field(description="The URL of the Elasticsearch instance", default="localhost:9200") elasticsearch_hosts: str | None = Field(description="The URL of the Elasticsearch instance", default="localhost:9200")
persistence: KVStoreReference | None = Field( persistence: KVStoreReference | None = Field(
description="Config for KV store backend (SQLite only for now)", default=None description="Config for KV store backend (SQLite only for now)", default=None
) )
@ -23,8 +23,8 @@ class ElasticsearchVectorIOConfig(BaseModel):
@classmethod @classmethod
def sample_run_config(cls, __distro_dir__: str, **kwargs: Any) -> dict[str, Any]: def sample_run_config(cls, __distro_dir__: str, **kwargs: Any) -> dict[str, Any]:
return { return {
"hosts": "${env.ELASTICSEARCH_API_KEY:=None}", "elasticsearch_url": "${env.ELASTICSEARCH_URL:=localhost:9200}",
"api_key": "${env.ELASTICSEARCH_URL:=localhost:9200}", "elasticsearch_api_key": "${env.ELASTICSEARCH_API_KEY:=}",
"persistence": KVStoreReference( "persistence": KVStoreReference(
backend="kv_default", backend="kv_default",
namespace="vector_io::elasticsearch", namespace="vector_io::elasticsearch",

View file

@ -244,8 +244,10 @@ class ElasticsearchVectorIOAdapter(OpenAIVectorStoreMixin, VectorIO, VectorStore
self.vector_store_table = None self.vector_store_table = None
async def initialize(self) -> None: async def initialize(self) -> None:
client_config = self.config.model_dump(exclude_none=True) self.client = AsyncElasticsearch(
self.client = AsyncElasticsearch(**client_config) hosts=self.config.elasticsearch_url,
api_key=self.config.elasticsearch_api_key
)
self.kvstore = await kvstore_impl(self.config.persistence) self.kvstore = await kvstore_impl(self.config.persistence)
start_key = VECTOR_DBS_PREFIX start_key = VECTOR_DBS_PREFIX