"use client"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible"; import { ChevronRight, Info } from "lucide-react"; import { IngestSettings as IngestSettingsType } from "./types"; interface IngestSettingsProps { isOpen: boolean; onOpenChange: (open: boolean) => void; settings?: IngestSettingsType; onSettingsChange?: (settings: IngestSettingsType) => void; } export const IngestSettings = ({ isOpen, onOpenChange, settings, onSettingsChange, }: IngestSettingsProps) => { // Default settings const defaultSettings: IngestSettingsType = { chunkSize: 1000, chunkOverlap: 200, ocr: false, pictureDescriptions: false, embeddingModel: "text-embedding-3-small", }; // Use provided settings or defaults const currentSettings = settings || defaultSettings; const handleSettingsChange = (newSettings: Partial) => { const updatedSettings = { ...currentSettings, ...newSettings }; onSettingsChange?.(updatedSettings); }; return (
Ingest settings
Chunk size
handleSettingsChange({ chunkSize: parseInt(e.target.value) || 0, }) } />
Chunk overlap
handleSettingsChange({ chunkOverlap: parseInt(e.target.value) || 0, }) } />
OCR
Extracts text from images/PDFs. Ingest is slower when enabled.
handleSettingsChange({ ocr: checked }) } />
Picture descriptions
Adds captions for images. Ingest is more expensive when enabled.
handleSettingsChange({ pictureDescriptions: checked }) } />
Embedding model
handleSettingsChange({ embeddingModel: e.target.value }) } placeholder="text-embedding-3-small" />
); };