| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import {
- Column,
- CreateDateColumn,
- Entity,
- PrimaryGeneratedColumn,
- UpdateDateColumn,
- ManyToMany,
- } from 'typeorm';
- import { KnowledgeGroup } from '../knowledge-group/knowledge-group.entity';
- export enum FileStatus {
- PENDING = 'pending',
- INDEXING = 'indexing',
- EXTRACTED = 'extracted', // テキスト抽出が完了し、データベースに保存されました
- VECTORIZED = 'vectorized', // ベクトル化が完了し、ES にインデックスされました
- FAILED = 'failed',
- }
- export enum ProcessingMode {
- FAST = 'fast', // 高速モード - Tika を使用
- PRECISE = 'precise', // 精密モード - Vision Pipeline を使用
- }
- @Entity('knowledge_bases')
- export class KnowledgeBase {
- @PrimaryGeneratedColumn('uuid')
- id: string;
- @Column({ name: 'original_name' })
- originalName: string;
- @Column({ name: 'storage_path' })
- storagePath: string;
- @Column({ type: 'integer', default: 0 })
- size: number;
- @Column({ length: 100, nullable: true })
- mimetype: string;
- @Column({
- type: 'simple-enum',
- enum: FileStatus,
- default: FileStatus.PENDING,
- })
- status: FileStatus;
- @Column({ name: 'user_id', nullable: true }) // 暫定的に空を許可(デバッグ用)、将来的には必須にすべき
- userId: string;
- @Column({ type: 'text', nullable: true })
- content: string; // Tika で抽出されたテキスト内容を保存
- // インデックス設定パラメータ
- @Column({ name: 'chunk_size', type: 'integer', default: 1000 })
- chunkSize: number;
- @Column({ name: 'chunk_overlap', type: 'integer', default: 200 })
- chunkOverlap: number;
- @Column({ name: 'embedding_model_id', nullable: true })
- embeddingModelId: string;
- @Column({
- type: 'simple-enum',
- enum: ProcessingMode,
- default: ProcessingMode.FAST,
- name: 'processing_mode',
- })
- processingMode: ProcessingMode;
- @Column({ type: 'json', nullable: true })
- metadata: any; // 追加のメタデータを保存(画像の説明、信頼度など)
- @Column({ name: 'pdf_path', nullable: true })
- pdfPath: string; // PDF ファイルパス(プレビュー用)
- @ManyToMany(() => KnowledgeGroup, (group) => group.knowledgeBases)
- groups: KnowledgeGroup[];
- @CreateDateColumn({ name: 'created_at' })
- createdAt: Date;
- @UpdateDateColumn({ name: 'updated_at' })
- updatedAt: Date;
- }
|