mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-09-23 21:17:11 +08:00
feat(llm): remove LLM deprecated functions
This commit is contained in:
parent
3a4bb47cc1
commit
c26b74495c
@ -408,7 +408,7 @@ async function reprocessAllNotes(req: Request, res: Response) {
|
|||||||
try {
|
try {
|
||||||
// Wrap the operation in cls.init to ensure proper context
|
// Wrap the operation in cls.init to ensure proper context
|
||||||
cls.init(async () => {
|
cls.init(async () => {
|
||||||
await vectorStore.reprocessAllNotes();
|
await indexService.reprocessAllNotes();
|
||||||
log.info("Embedding reprocessing completed successfully");
|
log.info("Embedding reprocessing completed successfully");
|
||||||
});
|
});
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
|
@ -512,7 +512,7 @@ export class AIServiceManager implements IAIServiceManager {
|
|||||||
if (!contextNotes || contextNotes.length === 0) {
|
if (!contextNotes || contextNotes.length === 0) {
|
||||||
try {
|
try {
|
||||||
// Get the default LLM service for context enhancement
|
// Get the default LLM service for context enhancement
|
||||||
const provider = this.getPreferredProvider();
|
const provider = this.getSelectedProvider();
|
||||||
const llmService = await this.getService(provider);
|
const llmService = await this.getService(provider);
|
||||||
|
|
||||||
// Find relevant notes
|
// Find relevant notes
|
||||||
@ -596,9 +596,9 @@ export class AIServiceManager implements IAIServiceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the preferred provider based on configuration (sync version for compatibility)
|
* Get the selected provider based on configuration (sync version for compatibility)
|
||||||
*/
|
*/
|
||||||
getPreferredProvider(): string {
|
getSelectedProvider(): string {
|
||||||
this.ensureInitialized();
|
this.ensureInitialized();
|
||||||
|
|
||||||
// Return the first available provider in the order
|
// Return the first available provider in the order
|
||||||
@ -803,8 +803,8 @@ export default {
|
|||||||
async getService(provider?: string): Promise<AIService> {
|
async getService(provider?: string): Promise<AIService> {
|
||||||
return getInstance().getService(provider);
|
return getInstance().getService(provider);
|
||||||
},
|
},
|
||||||
getPreferredProvider(): string {
|
getSelectedProvider(): string {
|
||||||
return getInstance().getPreferredProvider();
|
return getInstance().getSelectedProvider();
|
||||||
},
|
},
|
||||||
isProviderAvailable(provider: string): boolean {
|
isProviderAvailable(provider: string): boolean {
|
||||||
return getInstance().isProviderAvailable(provider);
|
return getInstance().isProviderAvailable(provider);
|
||||||
|
@ -14,7 +14,7 @@ import type { LLMStreamMessage } from "../interfaces/chat_ws_messages.js";
|
|||||||
import chatStorageService from '../chat_storage_service.js';
|
import chatStorageService from '../chat_storage_service.js';
|
||||||
import {
|
import {
|
||||||
isAIEnabled,
|
isAIEnabled,
|
||||||
getFirstValidModelConfig,
|
getSelectedModelConfig,
|
||||||
} from '../config/configuration_helpers.js';
|
} from '../config/configuration_helpers.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -419,7 +419,7 @@ class RestChatService {
|
|||||||
*/
|
*/
|
||||||
async getPreferredModel(): Promise<string | undefined> {
|
async getPreferredModel(): Promise<string | undefined> {
|
||||||
try {
|
try {
|
||||||
const validConfig = await getFirstValidModelConfig();
|
const validConfig = await getSelectedModelConfig();
|
||||||
if (!validConfig) {
|
if (!validConfig) {
|
||||||
log.error('No valid AI model configuration found');
|
log.error('No valid AI model configuration found');
|
||||||
return undefined;
|
return undefined;
|
||||||
|
@ -150,47 +150,3 @@ export async function getSelectedModelConfig(): Promise<{ model: string; provide
|
|||||||
return await getValidModelConfig(selectedProvider);
|
return await getValidModelConfig(selectedProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Legacy support functions - these maintain backwards compatibility but now use single provider logic
|
|
||||||
/**
|
|
||||||
* @deprecated Use getSelectedProvider() instead
|
|
||||||
*/
|
|
||||||
export async function getProviderPrecedence(): Promise<ProviderType[]> {
|
|
||||||
const selected = await getSelectedProvider();
|
|
||||||
return selected ? [selected] : [];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use getSelectedProvider() instead
|
|
||||||
*/
|
|
||||||
export async function getPreferredProvider(): Promise<ProviderType | null> {
|
|
||||||
return await getSelectedProvider();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use getSelectedEmbeddingProvider() instead
|
|
||||||
*/
|
|
||||||
export async function getEmbeddingProviderPrecedence(): Promise<string[]> {
|
|
||||||
const selected = await getSelectedEmbeddingProvider();
|
|
||||||
return selected ? [selected] : [];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use getSelectedEmbeddingProvider() instead
|
|
||||||
*/
|
|
||||||
export async function getPreferredEmbeddingProvider(): Promise<string | null> {
|
|
||||||
return await getSelectedEmbeddingProvider();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use getAvailableSelectedProvider() instead
|
|
||||||
*/
|
|
||||||
export async function getFirstAvailableProvider(): Promise<ProviderType | null> {
|
|
||||||
return await getAvailableSelectedProvider();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use getSelectedModelConfig() instead
|
|
||||||
*/
|
|
||||||
export async function getFirstValidModelConfig(): Promise<{ model: string; provider: ProviderType } | null> {
|
|
||||||
return await getSelectedModelConfig();
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
import log from '../../../log.js';
|
import log from '../../../log.js';
|
||||||
import { getEmbeddingProvider, getEnabledEmbeddingProviders } from '../../providers/providers.js';
|
import { getEmbeddingProvider, getEnabledEmbeddingProviders } from '../../providers/providers.js';
|
||||||
import { getSelectedEmbeddingProvider } from '../../config/configuration_helpers.js';
|
import { getSelectedEmbeddingProvider as getSelectedEmbeddingProviderName } from '../../config/configuration_helpers.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages embedding providers for context services
|
* Manages embedding providers for context services
|
||||||
@ -12,10 +12,10 @@ export class ProviderManager {
|
|||||||
*
|
*
|
||||||
* @returns The selected embedding provider or null if none available
|
* @returns The selected embedding provider or null if none available
|
||||||
*/
|
*/
|
||||||
async getPreferredEmbeddingProvider(): Promise<any> {
|
async getSelectedEmbeddingProvider(): Promise<any> {
|
||||||
try {
|
try {
|
||||||
// Get the selected embedding provider
|
// Get the selected embedding provider
|
||||||
const selectedProvider = await getSelectedEmbeddingProvider();
|
const selectedProvider = await getSelectedEmbeddingProviderName();
|
||||||
|
|
||||||
if (selectedProvider) {
|
if (selectedProvider) {
|
||||||
const provider = await getEmbeddingProvider(selectedProvider);
|
const provider = await getEmbeddingProvider(selectedProvider);
|
||||||
@ -51,7 +51,7 @@ export class ProviderManager {
|
|||||||
async generateQueryEmbedding(query: string): Promise<Float32Array | null> {
|
async generateQueryEmbedding(query: string): Promise<Float32Array | null> {
|
||||||
try {
|
try {
|
||||||
// Get the preferred embedding provider
|
// Get the preferred embedding provider
|
||||||
const provider = await this.getPreferredEmbeddingProvider();
|
const provider = await this.getSelectedEmbeddingProvider();
|
||||||
if (!provider) {
|
if (!provider) {
|
||||||
log.error('No embedding provider available');
|
log.error('No embedding provider available');
|
||||||
return null;
|
return null;
|
||||||
|
@ -58,7 +58,7 @@ export class ContextService {
|
|||||||
this.initPromise = (async () => {
|
this.initPromise = (async () => {
|
||||||
try {
|
try {
|
||||||
// Initialize provider
|
// Initialize provider
|
||||||
const provider = await providerManager.getPreferredEmbeddingProvider();
|
const provider = await providerManager.getSelectedEmbeddingProvider();
|
||||||
if (!provider) {
|
if (!provider) {
|
||||||
throw new Error(`No embedding provider available. Could not initialize context service.`);
|
throw new Error(`No embedding provider available. Could not initialize context service.`);
|
||||||
}
|
}
|
||||||
@ -224,7 +224,7 @@ export class ContextService {
|
|||||||
log.info(`Final combined results: ${relevantNotes.length} relevant notes`);
|
log.info(`Final combined results: ${relevantNotes.length} relevant notes`);
|
||||||
|
|
||||||
// Step 4: Build context from the notes
|
// Step 4: Build context from the notes
|
||||||
const provider = await providerManager.getPreferredEmbeddingProvider();
|
const provider = await providerManager.getSelectedEmbeddingProvider();
|
||||||
const providerId = provider?.name || 'default';
|
const providerId = provider?.name || 'default';
|
||||||
|
|
||||||
const context = await contextFormatter.buildContextFromNotes(
|
const context = await contextFormatter.buildContextFromNotes(
|
||||||
|
@ -79,7 +79,7 @@ export class VectorSearchService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get provider information
|
// Get provider information
|
||||||
const provider = await providerManager.getPreferredEmbeddingProvider();
|
const provider = await providerManager.getSelectedEmbeddingProvider();
|
||||||
if (!provider) {
|
if (!provider) {
|
||||||
log.error('No embedding provider available');
|
log.error('No embedding provider available');
|
||||||
return [];
|
return [];
|
||||||
@ -280,7 +280,7 @@ export class VectorSearchService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get provider information
|
// Get provider information
|
||||||
const provider = await providerManager.getPreferredEmbeddingProvider();
|
const provider = await providerManager.getSelectedEmbeddingProvider();
|
||||||
if (!provider) {
|
if (!provider) {
|
||||||
log.error('No embedding provider available');
|
log.error('No embedding provider available');
|
||||||
return [];
|
return [];
|
||||||
|
@ -64,8 +64,6 @@ export const {
|
|||||||
|
|
||||||
export const {
|
export const {
|
||||||
getEmbeddingStats,
|
getEmbeddingStats,
|
||||||
reprocessAllNotes,
|
|
||||||
queueNotesForMissingEmbeddings,
|
|
||||||
cleanupEmbeddings
|
cleanupEmbeddings
|
||||||
} = stats;
|
} = stats;
|
||||||
|
|
||||||
@ -107,8 +105,6 @@ export default {
|
|||||||
|
|
||||||
// Stats and maintenance
|
// Stats and maintenance
|
||||||
getEmbeddingStats: stats.getEmbeddingStats,
|
getEmbeddingStats: stats.getEmbeddingStats,
|
||||||
reprocessAllNotes: stats.reprocessAllNotes,
|
|
||||||
queueNotesForMissingEmbeddings: stats.queueNotesForMissingEmbeddings,
|
|
||||||
cleanupEmbeddings: stats.cleanupEmbeddings,
|
cleanupEmbeddings: stats.cleanupEmbeddings,
|
||||||
|
|
||||||
// Index operations
|
// Index operations
|
||||||
|
@ -1,14 +1,5 @@
|
|||||||
import sql from "../../../services/sql.js";
|
import sql from "../../../services/sql.js";
|
||||||
import log from "../../../services/log.js";
|
import log from "../../../services/log.js";
|
||||||
import indexService from '../index_service.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reprocess all notes to update embeddings
|
|
||||||
* @deprecated Use indexService.reprocessAllNotes() directly instead
|
|
||||||
*/
|
|
||||||
export async function reprocessAllNotes() {
|
|
||||||
return indexService.reprocessAllNotes();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get current embedding statistics
|
* Get current embedding statistics
|
||||||
@ -64,14 +55,6 @@ export async function getEmbeddingStats() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Queue notes that don't have embeddings for current provider settings
|
|
||||||
* @deprecated Use indexService.queueNotesForMissingEmbeddings() directly instead
|
|
||||||
*/
|
|
||||||
export async function queueNotesForMissingEmbeddings() {
|
|
||||||
return indexService.queueNotesForMissingEmbeddings();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cleanup function to remove stale or unused embeddings
|
* Cleanup function to remove stale or unused embeddings
|
||||||
*/
|
*/
|
||||||
|
@ -11,7 +11,7 @@ import { SEARCH_CONSTANTS } from '../constants/search_constants.js';
|
|||||||
import type { NoteEmbeddingContext } from "./embeddings_interface.js";
|
import type { NoteEmbeddingContext } from "./embeddings_interface.js";
|
||||||
import becca from "../../../becca/becca.js";
|
import becca from "../../../becca/becca.js";
|
||||||
import { isNoteExcludedFromAIById } from "../utils/ai_exclusion_utils.js";
|
import { isNoteExcludedFromAIById } from "../utils/ai_exclusion_utils.js";
|
||||||
import { getEmbeddingProviderPrecedence } from '../config/configuration_helpers.js';
|
import { getSelectedEmbeddingProvider } from '../config/configuration_helpers.js';
|
||||||
|
|
||||||
interface Similarity {
|
interface Similarity {
|
||||||
noteId: string;
|
noteId: string;
|
||||||
@ -277,9 +277,10 @@ export async function findSimilarNotes(
|
|||||||
log.info('No embeddings found for specified provider, trying fallback providers...');
|
log.info('No embeddings found for specified provider, trying fallback providers...');
|
||||||
|
|
||||||
// Use the new configuration system - no string parsing!
|
// Use the new configuration system - no string parsing!
|
||||||
const preferredProviders = await getEmbeddingProviderPrecedence();
|
const selectedProvider = await getSelectedEmbeddingProvider();
|
||||||
|
const preferredProviders = selectedProvider ? [selectedProvider] : [];
|
||||||
|
|
||||||
log.info(`Using provider precedence: ${preferredProviders.join(', ')}`);
|
log.info(`Using selected provider: ${selectedProvider || 'none'}`);
|
||||||
|
|
||||||
// Try providers in precedence order
|
// Try providers in precedence order
|
||||||
for (const provider of preferredProviders) {
|
for (const provider of preferredProviders) {
|
||||||
|
@ -266,7 +266,7 @@ export class IndexService {
|
|||||||
this.indexRebuildTotal = totalNotes;
|
this.indexRebuildTotal = totalNotes;
|
||||||
|
|
||||||
log.info("No embeddings found, starting full embedding generation first");
|
log.info("No embeddings found, starting full embedding generation first");
|
||||||
await vectorStore.reprocessAllNotes();
|
await this.reprocessAllNotes();
|
||||||
log.info("Full embedding generation initiated");
|
log.info("Full embedding generation initiated");
|
||||||
} else {
|
} else {
|
||||||
// For index rebuild, use the number of embeddings as the total
|
// For index rebuild, use the number of embeddings as the total
|
||||||
@ -293,7 +293,7 @@ export class IndexService {
|
|||||||
// Only start indexing if we're below 90% completion or if embeddings exist but need optimization
|
// Only start indexing if we're below 90% completion or if embeddings exist but need optimization
|
||||||
if (stats.percentComplete < 90) {
|
if (stats.percentComplete < 90) {
|
||||||
log.info("Embedding coverage below 90%, starting full embedding generation");
|
log.info("Embedding coverage below 90%, starting full embedding generation");
|
||||||
await vectorStore.reprocessAllNotes();
|
await this.reprocessAllNotes();
|
||||||
log.info("Full embedding generation initiated");
|
log.info("Full embedding generation initiated");
|
||||||
} else {
|
} else {
|
||||||
log.info(`Embedding coverage at ${stats.percentComplete}%, starting index optimization`);
|
log.info(`Embedding coverage at ${stats.percentComplete}%, starting index optimization`);
|
||||||
|
@ -30,7 +30,7 @@ export interface AIServiceManagerConfig {
|
|||||||
export interface IAIServiceManager {
|
export interface IAIServiceManager {
|
||||||
getService(provider?: string): Promise<AIService>;
|
getService(provider?: string): Promise<AIService>;
|
||||||
getAvailableProviders(): string[];
|
getAvailableProviders(): string[];
|
||||||
getPreferredProvider(): string;
|
getSelectedProvider(): string;
|
||||||
isProviderAvailable(provider: string): boolean;
|
isProviderAvailable(provider: string): boolean;
|
||||||
getProviderMetadata(provider: string): ProviderMetadata | null;
|
getProviderMetadata(provider: string): ProviderMetadata | null;
|
||||||
getAIEnabled(): boolean;
|
getAIEnabled(): boolean;
|
||||||
|
@ -50,7 +50,7 @@ export class SemanticContextExtractionStage extends BasePipelineStage<SemanticCo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Step 2: Format search results into a context string
|
// Step 2: Format search results into a context string
|
||||||
const provider = await providerManager.getPreferredEmbeddingProvider();
|
const provider = await providerManager.getSelectedEmbeddingProvider();
|
||||||
const providerId = provider?.name || 'default';
|
const providerId = provider?.name || 'default';
|
||||||
|
|
||||||
const context = await contextFormatter.buildContextFromNotes(
|
const context = await contextFormatter.buildContextFromNotes(
|
||||||
|
@ -328,17 +328,6 @@ export async function getEmbeddingProviderConfigs() {
|
|||||||
return await sql.getRows("SELECT * FROM embedding_providers ORDER BY priority DESC");
|
return await sql.getRows("SELECT * FROM embedding_providers ORDER BY priority DESC");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the default embedding providers
|
|
||||||
* @deprecated - Use on-demand provider creation instead
|
|
||||||
*/
|
|
||||||
export async function initializeDefaultProviders() {
|
|
||||||
// This function is now deprecated in favor of on-demand provider creation
|
|
||||||
// The createProvidersFromCurrentOptions() function should be used instead
|
|
||||||
log.info('initializeDefaultProviders called - using on-demand provider creation instead');
|
|
||||||
return await createProvidersFromCurrentOptions();
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
registerEmbeddingProvider,
|
registerEmbeddingProvider,
|
||||||
unregisterEmbeddingProvider,
|
unregisterEmbeddingProvider,
|
||||||
@ -350,8 +339,7 @@ export default {
|
|||||||
createEmbeddingProviderConfig,
|
createEmbeddingProviderConfig,
|
||||||
updateEmbeddingProviderConfig,
|
updateEmbeddingProviderConfig,
|
||||||
deleteEmbeddingProviderConfig,
|
deleteEmbeddingProviderConfig,
|
||||||
getEmbeddingProviderConfigs,
|
getEmbeddingProviderConfigs
|
||||||
initializeDefaultProviders
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user