import { ModuleConfig } from '@cool-midway/core';
import { UnstructuredLoaderOptions } from '@langchain/community/document_loaders/fs/unstructured';
import { StoreTypes } from './store';

/**
 * 模块配置
 */
export default () => {
  return {
    // 模块名称
    name: '知识库',
    // 模块描述
    description: '知识库，检索，向量存储等',
    // 中间件，只对本模块有效
    middlewares: [],
    // 中间件，全局有效
    globalMiddlewares: [],
    // 模块加载顺序，默认为0，值越大越优先加载
    order: 0,
    // 向量数据存储，默认为：faiss
    store: 'chroma' as StoreTypes,
    // chroma 配置
    chroma: {
      // 服务地址
      url: 'http://120.48.5.80/:8000',
      // 距离计算方式 可选 l2、cosine、ip
      distance: 'l2',
      // 重试次数，向量化失败时重试
      retry: 10,
      // 重试间隔，单位：ms
      retryInterval: 1000,
    },
    // 集合前缀
    prefix: 'COOL_',
    // Unstructured 配置，用于处理非结构化数据
    unstructured: {
      // 服务地址，可以使用云服务，也可以自己部署
      apiUrl: 'https://api.unstructured.io/general/v0/general',
      // api key, 如果是自己部署的服务，可以不填
      apiKey: 'xxx',
    } as UnstructuredLoaderOptions,
  } as ModuleConfig;
};
