@@ -85,17 +85,24 @@ async function setupVectorStore(): Promise<VectorStore> {
8585 // Get database configuration
8686 const dbConfig = getVectorDbConfig ( ) ;
8787
88- const embeddingModels = await loadGeminiEmbeddingsModels ( ) ;
89- const embeddingModel = embeddingModels [ 'Gemini embedding 001' ] ;
88+ // Try Gemini first, then OpenAI as fallback
89+ const geminiModels = await loadGeminiEmbeddingsModels ( ) ;
90+ const openaiModels = await loadOpenAIEmbeddingsModels ( ) ;
91+ const embeddingModel : Embeddings | undefined =
92+ ( geminiModels [ 'Gemini embedding 001' ] as unknown as Embeddings ) ||
93+ ( openaiModels [ 'Text embedding 3 large' ] as unknown as Embeddings ) ||
94+ ( openaiModels [ 'Text embedding 3 small' ] as unknown as Embeddings ) ;
9095
9196 if ( ! embeddingModel ) {
92- throw new Error ( 'Text embedding 3 large model not found' ) ;
97+ throw new Error (
98+ 'No embedding model configured. Set GEMINI_API_KEY or OPENAI_API_KEY.' ,
99+ ) ;
93100 }
94101
95102 // Initialize vector store
96103 vectorStore = await VectorStore . getInstance (
97104 dbConfig ,
98- embeddingModel as unknown as Embeddings ,
105+ embeddingModel ,
99106 ) ;
100107 logger . info ( 'VectorStore initialized successfully' ) ;
101108 return vectorStore ;
@@ -184,6 +191,7 @@ async function ingestSource(source: DocumentSource): Promise<void> {
184191 * Main function to run the ingestion process
185192 */
186193async function main ( ) {
194+ let exitCode = 0 ;
187195 try {
188196 // Prompt user for target
189197 const target = await promptForTarget ( ) ;
@@ -201,12 +209,18 @@ async function main() {
201209
202210 logger . info ( 'All specified ingestion processes completed successfully.' ) ;
203211 } catch ( error ) {
212+ exitCode = 1 ;
204213 logger . error ( 'An error occurred during the ingestion process:' , error ) ;
205214 } finally {
206- // Clean up resources
207- if ( vectorStore ) {
208- await vectorStore . close ( ) ;
209- process . exit ( 0 ) ;
215+ // Clean up resources and exit deterministically
216+ try {
217+ if ( vectorStore ) {
218+ await vectorStore . close ( ) ;
219+ }
220+ } catch ( cleanupError ) {
221+ logger . warn ( 'Error while cleaning up resources:' , cleanupError ) ;
222+ } finally {
223+ process . exit ( exitCode ) ;
210224 }
211225 }
212226}
0 commit comments