Home / Function/ generateEmbeddings() — supabase Function Reference

generateEmbeddings() — supabase Function Reference

Architecture documentation for the generateEmbeddings() function in generate-embeddings.ts from the supabase codebase.

Entity Profile

Dependency Diagram

graph TD
  b280bae5_b0f6_6775_91cb_d0697bd4d074["generateEmbeddings()"]
  ab45c7b7_d84b_8f76_aec3_3032205eab36["main()"]
  ab45c7b7_d84b_8f76_aec3_3032205eab36 -->|calls| b280bae5_b0f6_6775_91cb_d0697bd4d074
  9abc3daa_c7f3_bf98_164b_45dfa1200571["isNimbusMode()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| 9abc3daa_c7f3_bf98_164b_45dfa1200571
  0a6abd12_e69b_4275_ee07_8e2eb2d77ce1["requireEnvOrThrow()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| 0a6abd12_e69b_4275_ee07_8e2eb2d77ce1
  d2692d52_2f21_bf06_d2a1_f017222af67c["initSupabase()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| d2692d52_2f21_bf06_d2a1_f017222af67c
  66cf8c36_3d33_be18_f16b_1d94adf481eb["getPageTables()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| 66cf8c36_3d33_be18_f16b_1d94adf481eb
  e3264b04_c226_7750_2974_b29b0dc6cd3a["prepareSections()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| e3264b04_c226_7750_2974_b29b0dc6cd3a
  e004e86e_d6b3_597d_5a6c_1a898d503de3["processAndInsertEmbeddings()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| e004e86e_d6b3_597d_5a6c_1a898d503de3
  b25b1a95_6c17_3fe0_4b09_200b434c8c1e["updateSuccessfulChecksums()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| b25b1a95_6c17_3fe0_4b09_200b434c8c1e
  019b3eb5_7e03_6716_ae9b_866d040bb8ee["logFailedPages()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| 019b3eb5_7e03_6716_ae9b_866d040bb8ee
  bbb7258c_2e63_dc75_3f7f_ea1f0e42eb17["purgeOldPages()"]
  b280bae5_b0f6_6775_91cb_d0697bd4d074 -->|calls| bbb7258c_2e63_dc75_3f7f_ea1f0e42eb17
  style b280bae5_b0f6_6775_91cb_d0697bd4d074 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

apps/docs/scripts/search/generate-embeddings.ts lines 439–521

async function generateEmbeddings() {
  const shouldRefresh = Boolean(args.values.refresh)
  const debug = Boolean(args.values.debug)

  const nimbus = isNimbusMode()
  if (nimbus) {
    console.log('Running in Nimbus mode - will filter content based on disabled feature flags')
  }

  requireEnvOrThrow([
    'DOCS_GITHUB_APP_ID',
    'DOCS_GITHUB_APP_INSTALLATION_ID',
    'DOCS_GITHUB_APP_PRIVATE_KEY',
    'NEXT_PUBLIC_MISC_ANON_KEY',
    'NEXT_PUBLIC_MISC_URL',
    'NEXT_PUBLIC_SUPABASE_URL',
    'OPENAI_API_KEY',
    'SUPABASE_SECRET_KEY',
  ])

  const supabaseClient = initSupabase()

  const refreshVersion = uuidv4()
  const refreshDate = new Date()

  const { pageTable, pageSectionTable } = getPageTables()
  const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY })

  console.log(
    shouldRefresh
      ? 'Refresh flag set, re-generating all pages'
      : 'Checking which pages are new or have changed'
  )

  const { allSectionsToProcess, pageInfoMap } = await prepareSections(
    supabaseClient,
    pageTable,
    pageSectionTable,
    shouldRefresh,
    refreshVersion,
    refreshDate,
    !nimbus,
    debug
  )

  let processingResult: ProcessingResult
  try {
    processingResult = await processAndInsertEmbeddings(
      openai,
      supabaseClient,
      pageSectionTable,
      allSectionsToProcess,
      pageInfoMap
    )
    console.log(
      `Processing complete: ${processingResult.totalSectionsInserted}/${processingResult.totalSectionsProcessed} sections inserted successfully`
    )
    console.log(
      `Page summary: ${processingResult.successfulPages.size} successful, ${processingResult.failedPages.size} failed`
    )
  } catch (error) {
    console.error('Critical error during embedding processing:', error)
    console.log('Exiting due to complete processing failure')
    return
  }

  console.log(`\nUpdating checksums for ${processingResult.successfulPages.size} successful pages`)
  const successfulChecksumUpdates = await updateSuccessfulChecksums(
    supabaseClient,
    pageTable,
    pageInfoMap,
    processingResult
  )
  console.log(
    `Successfully updated checksums for ${successfulChecksumUpdates}/${processingResult.successfulPages.size} successful pages`
  )

  logFailedPages(pageInfoMap, processingResult)

  await purgeOldPages(supabaseClient, pageTable, refreshVersion)

  console.log('Embedding generation complete')
}

Subdomains

Called By

Frequently Asked Questions

What does generateEmbeddings() do?
generateEmbeddings() is a function in the supabase codebase.
What does generateEmbeddings() call?
generateEmbeddings() calls 9 function(s): getPageTables, initSupabase, isNimbusMode, logFailedPages, prepareSections, processAndInsertEmbeddings, purgeOldPages, requireEnvOrThrow, and 1 more.
What calls generateEmbeddings()?
generateEmbeddings() is called by 1 function(s): main.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free