ElasticsearchVectorStore

org.llm4s.vectorstore.elasticsearch.ElasticsearchVectorStore
See theElasticsearchVectorStore companion object

A org.llm4s.vectorstore.VectorStore over one Elasticsearch index, through its REST API and org.llm4s.http.Llm4sHttpClient: no Elasticsearch client library is involved.

The index is created on the first upsert if it does not exist, with a dense_vector field sized to ElasticsearchConfig#dimensions (or to the first record) and indexed for kNN with the configured ElasticsearchSimilarity. Writes go through _bulk; search is an approximate kNN search whose metadata filter is applied inside the kNN (so topK results come back when that many match); the other reads are plain queries. Each org.llm4s.vectorstore.MetadataFilter becomes a query DSL clause: Equals a term, In a terms, HasKey an exists, Contains a wildcard (*substring*), and And, Or and Not a bool query.

Reads of an index that does not exist yet answer as an empty store, and clear() deletes the index, which the next upsert creates again. Every operation returns a Result: a transport failure is the client's org.llm4s.error.NetworkError or org.llm4s.error.TimeoutError, a 401 or 403 an org.llm4s.error.AuthenticationError, a 429 a org.llm4s.error.RateLimitError, any other non-2xx status a org.llm4s.error.ServiceError carrying the status and the (redacted) body.

list pages with from and size, so offset + limit may not exceed the index's max_result_window (10,000 by default). Contains is a leading-wildcard query, refused by a cluster that sets search.allow_expensive_queries: false.

Attributes

Companion
object
Graph
Supertypes
trait VectorStore
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

override def clear(): Result[Unit]

Clear all records from the store.

Clear all records from the store.

Attributes

Returns

Success or error

Definition Classes
override def close(): Unit

Closes the HTTP client when this store created it; a client passed in belongs to the caller.

Closes the HTTP client when this store created it; a client passed in belongs to the caller.

Attributes

Definition Classes
override def count(filter: Option[MetadataFilter]): Result[Long]

Count total records in the store.

Count total records in the store.

Value parameters

filter

Optional metadata filter

Attributes

Returns

Record count

Definition Classes
override def delete(id: String): Result[Unit]

Delete a record by its ID.

Delete a record by its ID.

Value parameters

id

The record identifier

Attributes

Returns

Success or error

Definition Classes
override def deleteBatch(ids: Seq[String]): Result[Unit]

Delete multiple records by their IDs.

Delete multiple records by their IDs.

Value parameters

ids

The record identifiers

Attributes

Returns

Success or error

Definition Classes
override def deleteByFilter(filter: MetadataFilter): Result[Long]

Delete all records matching a metadata filter.

Delete all records matching a metadata filter.

Value parameters

filter

The metadata filter

Attributes

Returns

Number of records deleted

Definition Classes
override def deleteByPrefix(prefix: String): Result[Long]

Delete all records with IDs starting with the given prefix.

Delete all records with IDs starting with the given prefix.

Value parameters

prefix

The ID prefix to match

Attributes

Returns

Number of records deleted

Definition Classes
override def get(id: String): Result[Option[VectorRecord]]

Retrieve a record by its ID.

Retrieve a record by its ID.

Value parameters

id

The record identifier

Attributes

Returns

The record if found

Definition Classes
override def getBatch(ids: Seq[String]): Result[Seq[VectorRecord]]

Retrieve multiple records by their IDs.

Retrieve multiple records by their IDs.

Value parameters

ids

The record identifiers

Attributes

Returns

The found records (missing IDs are silently skipped)

Definition Classes
override def list(limit: Int, offset: Int, filter: Option[MetadataFilter]): Result[Seq[VectorRecord]]

List records with pagination.

List records with pagination.

Value parameters

filter

Optional metadata filter

limit

Maximum records to return

offset

Number of records to skip

Attributes

Returns

Records in insertion order

Definition Classes
override def search(queryVector: Array[Float], topK: Int, filter: Option[MetadataFilter]): Result[Seq[ScoredRecord]]

Search for similar vectors using cosine similarity.

Search for similar vectors using cosine similarity.

Value parameters

filter

Optional metadata filter

queryVector

The query embedding

topK

Number of results to return

Attributes

Returns

Matching records with similarity scores

Definition Classes
override def stats(): Result[VectorStoreStats]

Get statistics about the vector store.

Get statistics about the vector store.

Attributes

Returns

Store statistics

Definition Classes
override def upsert(record: VectorRecord): Result[Unit]

Store a vector record.

Store a vector record.

If a record with the same ID exists, it will be replaced.

Value parameters

record

The record to store

Attributes

Returns

Success or error

Definition Classes
override def upsertBatch(records: Seq[VectorRecord]): Result[Unit]

Store multiple vector records in a batch.

Store multiple vector records in a batch.

More efficient than individual upserts for bulk operations.

Value parameters

records

The records to store

Attributes

Returns

Success or error

Definition Classes

Concrete fields