@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
37 lines (30 loc) • 990 B
text/typescript
import { StateCreator } from 'zustand/vanilla';
import { ragService } from '@/services/rag';
import { FileStore } from '../../store';
export interface FileChunkAction {
closeChunkDrawer: () => void;
highlightChunks: (ids: string[]) => void;
openChunkDrawer: (id: string) => void;
semanticSearch: (text: string, fileId: string) => Promise<void>;
}
export const createFileChunkSlice: StateCreator<
FileStore,
[['zustand/devtools', never]],
[],
FileChunkAction
> = (set) => ({
closeChunkDrawer: () => {
set({ chunkDetailId: null, isSimilaritySearch: false, similaritySearchChunks: [] });
},
highlightChunks: (ids) => {
set({ highlightChunkIds: ids });
},
openChunkDrawer: (id) => {
set({ chunkDetailId: id });
},
semanticSearch: async (text, fileId) => {
set({ isSimilaritySearching: true });
const data = await ragService.semanticSearch(text, [fileId]);
set({ isSimilaritySearching: false, similaritySearchChunks: data });
},
});