/** * Neo4j GraphRAG Storage * * Extends Neo4jStorage with vector embedding and semantic search capabilities * using Neo4j 5.x's native vector index support. * * @packageDocumentation */ import type { SkillId, GraphRAGStorage, EmbeddingAdapter, SkillWithEmbedding, VectorSearchResult, VectorSearchOptions, GraphRAGSearchResult, GraphRAGSearchOptions, GraphRAGContext, LearningPathRAGRequest, LearningPathRAGResult, SimilarityMetric } from '../types/index.js'; import { Neo4jStorage } from './neo4j.js'; /** * Default GraphRAG configuration */ export declare const GRAPHRAG_DEFAULTS: { /** Default limit for vector search results */ searchLimit: number; /** Default minimum similarity score */ minScore: number; /** Default graph traversal depth */ graphDepth: number; /** Default weight for vector similarity in combined score */ vectorWeight: number; /** Default similarity metric */ metric: SimilarityMetric; /** Batch size for embedding operations */ embeddingBatchSize: number; }; /** * Neo4j GraphRAG Storage * * Provides vector embedding storage and semantic search using Neo4j 5.x * native vector indexes combined with graph traversal for enhanced context. * * @example * ```typescript * import { Neo4jGraphRAGStorage, createOpenAIEmbeddingAdapter } from 'learngraph'; * * const storage = new Neo4jGraphRAGStorage(); * await storage.connect({ * backend: 'neo4j', * uri: 'bolt://localhost:7687', * username: 'neo4j', * password: 'password', * }); * * // Set embedding adapter * const embedding = createOpenAIEmbeddingAdapter(); * storage.setEmbeddingAdapter(embedding); * * // Create vector index * await storage.createVectorIndex({ dimensions: 1536 }); * * // Embed all skills * await storage.embedAllSkills(); * * // Semantic search with graph context * const results = await storage.searchWithGraphContext('learn JavaScript functions'); * ``` */ export declare class Neo4jGraphRAGStorage extends Neo4jStorage implements GraphRAGStorage { private embeddingAdapter; private vectorIndexName; private vectorIndexDimensions; setEmbeddingAdapter(adapter: EmbeddingAdapter): void; getEmbeddingAdapter(): EmbeddingAdapter | null; private requireEmbeddingAdapter; /** * Generate text representation for embedding */ private getEmbeddingText; embedSkill(skillId: SkillId): Promise; embedAllSkills(options?: { batchSize?: number; onProgress?: (completed: number, total: number) => void; }): Promise<{ embedded: number; failed: number; }>; hasEmbedding(skillId: SkillId): Promise; getSkillWithEmbedding(skillId: SkillId): Promise; searchByVector(query: string, options?: VectorSearchOptions): Promise; searchByEmbedding(embedding: number[], options?: VectorSearchOptions): Promise; findSimilarSkills(skillId: SkillId, options?: VectorSearchOptions): Promise; searchWithGraphContext(query: string, options?: GraphRAGSearchOptions): Promise; buildRAGContext(query: string, options?: GraphRAGSearchOptions): Promise; private formatContextForLLM; generateLearningPathRAG(request: LearningPathRAGRequest): Promise; createVectorIndex(options?: { dimensions?: number; metric?: SimilarityMetric; }): Promise; dropVectorIndex(): Promise; hasVectorIndex(): Promise; getVectorIndexStats(): Promise<{ exists: boolean; dimensions?: number; metric?: SimilarityMetric; indexedCount: number; totalSkills: number; }>; } /** * Create a Neo4j GraphRAG storage instance */ export declare function createNeo4jGraphRAGStorage(): Neo4jGraphRAGStorage; //# sourceMappingURL=neo4j-graphrag.d.ts.map