C3 AI Documentation Home

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:

JavaScript
Js.exec(
  "EnableAclPrivilege.forId('Genai.SourceFile').withField('enabled', true).merge({ mergeInclude: 'enabled' }); Genai.SourceFile.refreshAcls();"
);

To enable ACLs on SourceCollections, run the following:

JavaScript
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.Retriever is the parent entity for all retriever types. Genai.Retriever.py has all common logic shared among retrievers.
  • Indexing happens asynchronously through the AsyncQueue.
  • Each new indexing action creates a Genai.Retriever.IndexAction which is started in order by Genai.Retriever.IndexAction.processQueues.
    • This structure ensures that indexing/unindexing action A fully completes before B starts, to prevent conflicting updates to the index.

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.

JavaScript
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.

See also

Was this page helpful?