Groonga
Loading...
Searching...
No Matches
language_model.h File Reference
#include <groonga/progress.h>
Include dependency graph for language_model.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define GRN_LANGUAGE_MODEL_LOADER_N_GPU_LAYERS_DEFAULT   999
 The default N GPU layers to use in language model. In general, we use GPU as much as possible by default.
 

Typedefs

typedef struct grn_language_model_ grn_language_model
 Language model.
 
typedef struct grn_language_model_inferencer_ grn_language_model_inferencer
 Language model inferencer.
 
typedef struct grn_language_model_loader_ grn_language_model_loader
 Language model loader.
 

Functions

GRN_API grn_language_model_loadergrn_language_model_loader_open (grn_ctx *ctx)
 Open a new language model loader.
 
GRN_API grn_rc grn_language_model_loader_close (grn_ctx *ctx, grn_language_model_loader *loader)
 Close a language model loader.
 
GRN_API grn_rc grn_language_model_loader_set_model (grn_ctx *ctx, grn_language_model_loader *loader, const char *model, int64_t model_length)
 Set language model name to load.
 
GRN_API grn_rc grn_language_model_loader_set_n_gpu_layers (grn_ctx *ctx, grn_language_model_loader *loader, int32_t n_gpu_layers)
 Set the number of GPU layers to use.
 
GRN_API grn_language_modelgrn_language_model_loader_load (grn_ctx *ctx, grn_language_model_loader *loader)
 Load a language model.
 
GRN_API uint32_t grn_language_model_get_n_embedding_dimensions (grn_ctx *ctx, grn_language_model *model)
 Get the number of dimensions of embedding generated by this model.
 
GRN_API grn_rc grn_language_model_close (grn_ctx *ctx, grn_language_model *model)
 Close a language model.
 
GRN_API grn_language_model_inferencergrn_language_model_open_inferencer (grn_ctx *ctx, grn_language_model *model)
 Open a new language model inferencer.
 
GRN_API grn_rc grn_language_model_inferencer_close (grn_ctx *ctx, grn_language_model_inferencer *inferencer)
 Close a language model inferencer.
 
GRN_API grn_rc grn_language_model_inferencer_set_input_column_value_prefix (grn_ctx *ctx, grn_language_model_inferencer *inferencer, const char *prefix, int64_t prefix_length)
 Prepend prefix to all values of input_column in grn_language_model_inferencer_vectorize_in_batch and grn_language_model_inferencer_vectorize_applier.
 
GRN_API grn_rc grn_language_model_inferencer_set_progress_callback (grn_ctx *ctx, grn_language_model_inferencer *inferencer, grn_progress_callback_func callback, void *user_data)
 Set progress callback that is called on each batch vectorization is completed.
 
GRN_API grn_rc grn_language_model_inferencer_vectorize (grn_ctx *ctx, grn_language_model_inferencer *inferencer, const char *text, int64_t text_length, grn_obj *output_vector)
 Vectorize a text.
 
GRN_API grn_rc grn_language_model_inferencer_vectorize_applier (grn_ctx *ctx, grn_language_model_inferencer *inferencer, grn_obj *input_column, grn_applier_data *data)
 Vectorize texts in batch.
 
GRN_API grn_rc grn_language_model_inferencer_vectorize_in_batch (grn_ctx *ctx, grn_language_model_inferencer *inferencer, grn_table_cursor *cursor, grn_obj *input_column, grn_obj *output)
 Vectorize texts and output embeddings set to Float32 GRN_UVECTOR or vector column in batch.
 

Macro Definition Documentation

◆ GRN_LANGUAGE_MODEL_LOADER_N_GPU_LAYERS_DEFAULT

#define GRN_LANGUAGE_MODEL_LOADER_N_GPU_LAYERS_DEFAULT   999

The default N GPU layers to use in language model. In general, we use GPU as much as possible by default.

This value is same as n_gpu_layers of llama_model_default_params().

Since
15.2.1

Typedef Documentation

◆ grn_language_model

typedef struct grn_language_model_ grn_language_model

Language model.

   You need to use \ref grn_language_model_loader_load to load
   \ref grn_language_model.

◆ grn_language_model_inferencer

typedef struct grn_language_model_inferencer_ grn_language_model_inferencer

Language model inferencer.

   You need to use \ref grn_language_model_open_inferencer to
   open \ref grn_language_model_inferencer.

◆ grn_language_model_loader

typedef struct grn_language_model_loader_ grn_language_model_loader

Language model loader.

Function Documentation

◆ grn_language_model_close()

GRN_API grn_rc grn_language_model_close ( grn_ctx ctx,
grn_language_model model 
)

Close a language model.

Parameters
ctxThe context object.
modelThe model to close.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.

◆ grn_language_model_get_n_embedding_dimensions()

GRN_API uint32_t grn_language_model_get_n_embedding_dimensions ( grn_ctx ctx,
grn_language_model model 
)

Get the number of dimensions of embedding generated by this model.

Parameters
ctxThe context object.
modelThe model.
Returns
The number of dimensions on success, 0 on error.
    See `ctx->rc` for error details.

◆ grn_language_model_inferencer_close()

GRN_API grn_rc grn_language_model_inferencer_close ( grn_ctx ctx,
grn_language_model_inferencer inferencer 
)

Close a language model inferencer.

Parameters
ctxThe context object.
inferencerThe inferencer to close.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.

◆ grn_language_model_inferencer_set_input_column_value_prefix()

GRN_API grn_rc grn_language_model_inferencer_set_input_column_value_prefix ( grn_ctx ctx,
grn_language_model_inferencer inferencer,
const char *  prefix,
int64_t  prefix_length 
)

Prepend prefix to all values of input_column in grn_language_model_inferencer_vectorize_in_batch and grn_language_model_inferencer_vectorize_applier.

Parameters
ctxThe context object.
inferencerThe inferencer.
prefixThe prefix.
prefix_lengthThe byte size of prefix. You can use -1 if prefix is a \0-terminated string.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.
Since
15.1.9

◆ grn_language_model_inferencer_set_progress_callback()

GRN_API grn_rc grn_language_model_inferencer_set_progress_callback ( grn_ctx ctx,
grn_language_model_inferencer inferencer,
grn_progress_callback_func  callback,
void *  user_data 
)

Set progress callback that is called on each batch vectorization is completed.

Parameters
ctxThe context object.
inferencerThe inferencer.
callbackThe callback.
user_dataThe data that is passed to the callback when callback is called.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.
Since
15.2.1

◆ grn_language_model_inferencer_vectorize()

GRN_API grn_rc grn_language_model_inferencer_vectorize ( grn_ctx ctx,
grn_language_model_inferencer inferencer,
const char *  text,
int64_t  text_length,
grn_obj output_vector 
)

Vectorize a text.

In other words, compute embeddings of a text.

Parameters
ctxThe context object.
inferencerThe inferencer.
textThe text to vectorize.
text_lengthThe byte size of text. You can use -1 if text is a \0-terminated string.
output_vectorGRN_DB_FLOAT32 vector as an output. A caller must initialize this by GRN_FLOAT32_INIT and GRN_OBJ_VECTOR.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.

◆ grn_language_model_inferencer_vectorize_applier()

GRN_API grn_rc grn_language_model_inferencer_vectorize_applier ( grn_ctx ctx,
grn_language_model_inferencer inferencer,
grn_obj input_column,
grn_applier_data data 
)

Vectorize texts in batch.

In other words, compute embeddings set of texts. This is efficient than calling grn_language_model_inferencer_vectorize() multiple times.

This should be used from an applier.

Parameters
ctxThe context object.
inferencerThe inferencer.
input_columnThe text family column or accessor. Caller must be ensure it. This function doesn't validate it.
dataThe applier data passed to an applier function.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.

◆ grn_language_model_inferencer_vectorize_in_batch()

GRN_API grn_rc grn_language_model_inferencer_vectorize_in_batch ( grn_ctx ctx,
grn_language_model_inferencer inferencer,
grn_table_cursor cursor,
grn_obj input_column,
grn_obj output 
)

Vectorize texts and output embeddings set to Float32 GRN_UVECTOR or vector column in batch.

In other words, compute embeddings set of texts. This is efficient than calling grn_language_model_inferencer_vectorize() multiple times.

You can use grn_memory_map to write and read the result embeddings set without allocating memory for all embeddings set:

uint32_t n_dimensions = 256;
uint32_t n_records = 1000;
size_t embeddings_set_size = n_dimensions * n_records;
grn_memory_map *embeddings_set_map =
"/tmp/embeddings",
0,
embeddings_set_size);
float *embeddings_set_raw =
grn_memory_map_get_address(ctx, embeddings_set_map);
grn_obj embeddings_set;
GRN_BINARY_SET_REF(&embeddings_set, embeddings_set_raw, embeddings_set_size);
GRN_BULK_REWIND(&embeddings_set);
source_table,
NULL, 0,
NULL, 0,
if (cursor) {
inferencer,
cursor,
source_column,
&embeddings_set);
grn_table_cursor_close(ctx, cursor);
}
// Use &embedding_set
GRN_OBJ_FIN(ctx, &embedding_set);
grn_memory_map_close(ctx, embeddings_set_map);
#define GRN_OBJ_VECTOR
Definition groonga.h:2734
#define GRN_FLOAT32_INIT(obj, flags)
Definition groonga.h:2862
#define GRN_OBJ_FIN(ctx, obj)
Definition groonga.h:958
#define GRN_BULK_REWIND(bulk)
Definition groonga.h:2599
#define GRN_BINARY_SET_REF(obj, data, len)
Definition groonga.h:2798
#define GRN_OBJ_DO_SHALLOW_COPY
Definition groonga.h:2732
GRN_API grn_rc grn_language_model_inferencer_vectorize_in_batch(grn_ctx *ctx, grn_language_model_inferencer *inferencer, grn_table_cursor *cursor, grn_obj *input_column, grn_obj *output)
Vectorize texts and output embeddings set to Float32 GRN_UVECTOR or vector column in batch.
GRN_API grn_memory_map * grn_memory_map_open(grn_ctx *ctx, const char *path, grn_memory_map_flags flags, uint64_t offset, size_t length)
#define GRN_MEMORY_MAP_READ
Definition memory_map.h:30
GRN_API void grn_memory_map_close(grn_ctx *ctx, grn_memory_map *map)
struct grn_memory_map grn_memory_map
Definition memory_map.h:27
#define GRN_MEMORY_MAP_WRITE
Definition memory_map.h:31
GRN_API void * grn_memory_map_get_address(grn_ctx *ctx, grn_memory_map *map)
Definition groonga.h:919
GRN_API grn_rc grn_table_cursor_close(grn_ctx *ctx, grn_table_cursor *tc)
Free the cursor created by grn_table_cursor_open()
GRN_API grn_table_cursor * grn_table_cursor_open(grn_ctx *ctx, grn_obj *table, const void *min, unsigned int min_size, const void *max, unsigned int max_size, int offset, int limit, int flags)
Creates and returns a cursor to retrieve the records registered in the table in order.
#define GRN_CURSOR_BY_ID
Definition table.h:280
Parameters
ctxThe context object.
inferencerThe inferencer.
cursorThe cursor that returns target record IDs.
input_columnThe text family column or accessor. Caller must be ensure it. This function doesn't validate it.
outputThe generated embeddings set. This must be a Float32 vector or Float32 vector column. Output order is same as IDs returned by the cursor.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.

◆ grn_language_model_loader_close()

GRN_API grn_rc grn_language_model_loader_close ( grn_ctx ctx,
grn_language_model_loader loader 
)

Close a language model loader.

Parameters
ctxThe context object.
loaderThe loader to close.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.

◆ grn_language_model_loader_load()

GRN_API grn_language_model * grn_language_model_loader_load ( grn_ctx ctx,
grn_language_model_loader loader 
)

Load a language model.

   If the target model is already loaded, this reuses the model
   instead of loading a new model.
Parameters
ctxThe context object.
loaderThe loader.
Returns
A loaded grn_language_model on success, NULL on error.
    See `ctx->rc` for error details.

◆ grn_language_model_loader_open()

GRN_API grn_language_model_loader * grn_language_model_loader_open ( grn_ctx ctx)

Open a new language model loader.

Parameters
ctxThe context object.
Returns
A newly created language model loader on success, NULL on error.

◆ grn_language_model_loader_set_model()

GRN_API grn_rc grn_language_model_loader_set_model ( grn_ctx ctx,
grn_language_model_loader loader,
const char *  model,
int64_t  model_length 
)

Set language model name to load.

Parameters
ctxThe context object.
loaderThe loader.
modelThe model name to load.
model_lengthThe byte size of model. You can use -1 if model is a \0-terminated string.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.
Since
15.1.8

◆ grn_language_model_loader_set_n_gpu_layers()

GRN_API grn_rc grn_language_model_loader_set_n_gpu_layers ( grn_ctx ctx,
grn_language_model_loader loader,
int32_t  n_gpu_layers 
)

Set the number of GPU layers to use.

You can disable GPU by specifying 0 as n_gpu_layers.

Parameters
ctxThe context object.
loaderThe loader.
n_gpu_layersThe number of GPU layers to use.
Returns
GRN_SUCCESS on success, the appropriate grn_rc on error.
Since
15.2.1

◆ grn_language_model_open_inferencer()

GRN_API grn_language_model_inferencer * grn_language_model_open_inferencer ( grn_ctx ctx,
grn_language_model model 
)

Open a new language model inferencer.

Parameters
ctxThe context object.
modelThe model to inference.
Returns
A newly created grn_language_model_inferencer on success, NULL on error.

See ctx->rc for error details.