Other Capabilities
Access control lists
Access control lists, or ACLs, may be enabled on SourceFiles and SourceCollections. For more information, see the access control topic.
To enable ACLs on SourceFiles, run the following:
Js.exec(
"EnableAclPrivilege.forId('Genai.SourceFile').withField('enabled', true).merge({ mergeInclude: 'enabled' }); Genai.SourceFile.refreshAcls();"
);To enable ACLs on SourceCollections, run the following:
Js.exec(
"EnableAclPrivilege.forId('Genai.SourceCollection').withField('enabled', true).merge({ mergeInclude: 'enabled' }); Genai.SourceCollection.refreshAcls();"
);After ACLs are enabled, ensure the acl field is populated for the respective entity Type.
Retrievers
Genai.Retrieveris the parent entity for all retriever types.Genai.Retriever.pyhas all common logic shared among retrievers.- Indexing happens asynchronously through the AsyncQueue.
- Each new indexing action creates a
Genai.Retriever.IndexActionwhich is started in order byGenai.Retriever.IndexAction.processQueues.- This structure ensures that indexing/unindexing action
Afully completes beforeBstarts, to prevent conflicting updates to the index.
- This structure ensures that indexing/unindexing action
pgvector retriever
Genai.Retriever.PgVector is the recommended retriever for all production deployments. All source passages are stored along with their embeddings in Genai.Vector.SourcePassage. Since Genai.Vector.SourcePassage is an entity type, Genai.Retriever.PgVector fully supports efficient filtering on similarity searches and incremental updates to the set of indexed passages.
Configure an air-gapped environment
For a full walkthrough of air-gapped setup, including Python runtime export and MIS configuration, see Air-Gapped Deployment.
To configure model paths for chunking and indexing in an air-gapped environment, set the following configuration values to point to the downloaded zips of tokenizers and models.
Genai.App.AirGapConfig.inst().setConfigValues({
// Embedders
fewShotEmbedderModelName: '<model-name>',
fewShotEmbedderPath: '<filepath>',
e5EmbedderPath: '<filepath>',
mxbaiEmbedderPath: '<filepath>',
tasbEmbedderPath: '<filepath>',
pgVectorEmbedderPath: '<filepath>',
// Attribution and chunking tokenizers
attributorTokenizerPath: '<filepath>',
sourceFileChunkerTokenizerPath: '<filepath>',
tableTextSplitterEncoderPath: '<filepath>',
tokenTextSplitterEncoderPath: '<filepath>',
spacyModelPath: '<filepath>',
// NLTK
nltkSentenceTokenizerModelFilePath: '<filepath>',
nltkResourcesFilePath: '<filepath>',
nltkTaggersFilePaths: ['<filepath>'],
// Models and parsers
msmarcoDistilbertBaseTasBFilePath: '<filepath>',
tatrZipPath: '<filepath>',
nougatZipPath: '<filepath>',
detectronZipPath: '<filepath>',
dprQuestionEncoderPath: '<filepath>',
dprContextEncoderPath: '<filepath>',
misTokenizerPath: '<filepath>',
llavaModelPath: '<filepath>',
});After setting the configurations, call Genai.App.AirGapConfig.validateConfigs() to verify all files are accessible. See Genai.App.AirGapConfig for the full field reference.