GoodMem
ReferenceAPIgRPC API

Common

Common service API reference

Messages

StringMap

A wrapper for a string-to-string map.

This is a workaround for a limitation in Protocol Buffers where a map field cannot be directly placed in a oneof. By wrapping the map in this message, it can be used in oneof fields for update strategies, such as replacing vs. merging labels in update RPCs.

FieldTypeDescription
labels...odmem.v1.StringMap.LabelsEntryThe string-to-string map

StringMap.LabelsEntry

FieldTypeDescription
keystring
valuestring

GoodMemStatus

Represents a non-fatal status or warning message for GoodMem operations.

This is typically used in streaming RPCs to provide progress updates or report partial failures without stopping the stream.

FieldTypeDescription
codegoodmem.v1.GoodMemStatusCodeA programmatic status code for client-side handling
messagestringA human-readable description of the status
details....v1.GoodMemStatus.DetailsEntryAdditional context (e.g., `embedder_id`, `space_id`)

GoodMemStatus.DetailsEntry

FieldTypeDescription
keystring
valuestring

ChunkingConfig

Defines the strategy for splitting a single document into multiple chunks.

This is a top-level configuration that can be set as a default for a Space or specified for an individual Memory, overriding the space's default. Exactly one chunking strategy must be selected.

FieldTypeDescription
none...m.v1.ChunkingConfig.NoChunkingDo not split the document
recursive...unkingConfig.RecursiveChunkingUse the recursive splitting strategy
sentence...hunkingConfig.SentenceChunkingUse the sentence-based splitting strategy

ChunkingConfig.RecursiveChunking

A strategy that splits text recursively based on a list of separators.

This method iterates through a list of separators (e.g., "\n\n", "\n", " ", ""), splitting the text at each level until the chunks are smaller than the specified size.

FieldTypeDescription
chunk_sizeuint32The target size for each chunk (e.g., 1024). Must be > 0
chunk_overlapuint32The number of characters or tokens to overlap between chunks
separatorsstringHierarchical list of separators to split on, in order of preference
keep_strategy...ngConfig.SeparatorKeepStrategyHow to handle separators after splitting
separator_is_regexboolWhether the separator strings are to be treated as regular expressions
length_measurement...unkingConfig.LengthMeasurementThe method for measuring chunk length

ChunkingConfig.SentenceChunking

A strategy that splits text based on sentence boundaries.

This method is generally more semantically aware than recursive splitting but may be less predictable in chunk size.

FieldTypeDescription
max_chunk_sizeuint32The maximum size of a chunk. Must be > 0
min_chunk_sizeuint32The minimum size of a chunk before creating a new one
enable_language_detectionboolWhether to detect the language for more accurate sentence segmentation
length_measurement...unkingConfig.LengthMeasurementThe method for measuring chunk length

ChunkingConfig.NoChunking

A strategy that performs no chunking, treating the document as a single chunk.

Enums

ChunkingConfig.SeparatorKeepStrategy

Defines how to handle separators during recursive chunking.

NameValueDescription
SEPARATOR_KEEP_STRATEGY_UNSPECIFIED0The default value. Invalid on writes
KEEP_NONE1Drop the separator text entirely
KEEP_START2Prepend the separator to the following chunk
KEEP_END3Append the separator to the preceding chunk (LangChain default)

ChunkingConfig.LengthMeasurement

Defines the method for measuring the length of a chunk.

NameValueDescription
LENGTH_MEASUREMENT_UNSPECIFIED0The default value. Invalid on writes
CHARACTER_COUNT1Measure length by number of characters (default)
TOKEN_COUNT2Measure length by number of tokens (requires a server-side tokenizer)
CUSTOM3Reserved for custom, server-side-only length functions

SortOrder

Specifies the sort order for list operations.

NameValueDescription
SORT_ORDER_UNSPECIFIED0The default value. This is invalid on writes and will be rejected.
ASCENDING1Sorts results in ascending order (e.g., A-Z, 0-9)
DESCENDING2Sorts results in descending order (e.g., Z-A, 9-0)

ProviderType

Defines the backend provider for an embedder or reranker model.

Note: This enum is shared between embedders and rerankers. A potential risk is that the list of supported providers may diverge. For LLMs, a separate LLMProviderType enum is used to avoid this issue.

NameValueDescription
PROVIDER_TYPE_UNSPECIFIED0The default value. This is invalid on writes and will be rejected
PROVIDER_TYPE_OPENAI1Models provided by OpenAI (e.g., `text-embedding-ada-002`)
PROVIDER_TYPE_VLLM2Models served via a vLLM-compatible API endpoint
PROVIDER_TYPE_TEI3Models served via the HuggingFace Text-Embeddings-Inference (TEI) toolkit
PROVIDER_TYPE_LLAMA_CPP4Models served via a Llama.cpp-compatible API endpoint
PROVIDER_TYPE_VOYAGE5Models provided by Voyage AI (e.g., `rerank-2.5`)
PROVIDER_TYPE_COHERE6Models provided by Cohere's platform
PROVIDER_TYPE_JINA7Models provided by Jina AI or Jina-compatible endpoints

Modality

Defines the type of content a model can process.

Used by embedders, rerankers, and LLMs to declare their capabilities.

NameValueDescription
MODALITY_UNSPECIFIED0The default value. This is invalid on writes and will be rejected
MODALITY_TEXT1Textual content
MODALITY_IMAGE2Image content
MODALITY_AUDIO3Audio content
MODALITY_VIDEO4Video content

GoodMemStatusCode

Defines granular, non-fatal status codes for GoodMem operations.

These codes are sent in the GoodMemStatus message, typically in streaming responses, to provide clients with programmatic insight into the progress or partial failures of a request without terminating the entire operation.

NameValueDescription
GOODMEM_STATUS_CODE_UNSPECIFIED0The default value. Should not be used
INVALID_ARGUMENT3Standard gRPC status codes (mirrored for client independence)
Invalid request parameters (mirrors gRPC INVALID_ARGUMENT)
NOT_FOUND5Requested resource not found (mirrors gRPC NOT_FOUND)
PERMISSION_DENIED7Access denied to resource (mirrors gRPC PERMISSION_DENIED)
FAILED_PRECONDITION9Operation requires specific preconditions (mirrors gRPC FAILED_PRECONDITION)
EMBEDDER_FAILED1000Embedder-related warnings
Embedding generation failed for a specific embedder
EMBEDDER_UNAVAILABLE1001Embedder service is temporarily unavailable
EMBEDDER_TIMEOUT1002Embedding request timed out
VECTOR_SEARCH_FAILED2000Vector search warnings
Vector search failed for a specific embedder/space
VECTOR_SEARCH_PARTIAL2001Vector search returned partial results
VECTOR_SEARCH_TIMEOUT2002Vector search timed out
SPACE_INACCESSIBLE3000Space access warnings
User lacks permission to access a requested space
SPACE_NOT_FOUND3001Requested space does not exist
SPACE_NO_EMBEDDERS3002Space has no configured embedders
CHUNK_NOT_FOUND4000Memory/chunk warnings
Referenced chunk was not found in database
MEMORY_LOAD_FAILED4001Failed to load memory data
MEMORY_CONTENT_UNAVAILABLE4002Memory content could not be retrieved
RERANKING_FAILED5000Processing warnings
Post-processing reranking failed
SUMMARIZATION_FAILED5001Summary generation failed
SUMMARIZATION_TIMEOUT5002Summary generation timed out
RATE_LIMITED6000System warnings
Request was rate limited
RESOURCE_EXHAUSTED6001System resources exhausted (memory, CPU, etc.)
CONFIGURATION_ERROR6002System configuration issue detected
LLM_CAPABILITY_INFERRED7000LLM-related warnings
LLM capability was auto-filled by the system.
FEATURE_DISABLED9000Informational status messages (non-error)
Feature disabled due to missing configuration