index.tsx


Overview

This file defines React components and related types/validation schemas for rendering slider inputs used to configure similarity thresholds and weights in a form, likely related to knowledge or search relevance settings. It provides two main UI components:

The file also exports initial values and Zod schemas for input validation and type safety, ensuring the similarity threshold and similarity weight inputs are numbers.

The components support localization via a custom useTranslate hook and optionally show tooltips with explanatory information.


Detailed Explanation

Types and Interfaces

type FieldType = {
  similarity_threshold?: number;
  // vector_similarity_weight?: number;
};
interface IProps {
  isTooltipShown?: boolean;
  vectorSimilarityWeightName?: string;
}
interface SimilaritySliderFormFieldProps {
  vectorSimilarityWeightName?: string;
  isTooltipShown?: boolean;
}

Constants and Validation Schemas

export const initialSimilarityThresholdValue = {
  similarity_threshold: 0.2,
};
export const initialKeywordsSimilarityWeightValue = {
  keywords_similarity_weight: 0.7,
};
export const initialVectorSimilarityWeightValue = {
  vector_similarity_weight: 0.3,
};
export const similarityThresholdSchema = { similarity_threshold: z.number() };
export const keywordsSimilarityWeightSchema = {
  keywords_similarity_weight: z.number(),
};
export const vectorSimilarityWeightSchema = {
  vector_similarity_weight: z.number(),
};

Components

SimilaritySlider

const SimilaritySlider = ({
  isTooltipShown = false,
  vectorSimilarityWeightName = 'vector_similarity_weight',
}: IProps) => {
  const { t } = useTranslate('knowledgeDetails');

  return (
    <>
      <Form.Item<FieldType>
        label={t('similarityThreshold')}
        name={'similarity_threshold'}
        tooltip={isTooltipShown && t('similarityThresholdTip')}
        initialValue={0.2}
      >
        <Slider max={1} step={0.01} />
      </Form.Item>
      <Form.Item
        label={t('vectorSimilarityWeight')}
        name={vectorSimilarityWeightName}
        initialValue={1 - 0.3}
        tooltip={isTooltipShown && t('vectorSimilarityWeightTip')}
      >
        <Slider max={1} step={0.01} />
      </Form.Item>
    </>
  );
};
<Form>
  <SimilaritySlider isTooltipShown={true} />
</Form>

SimilaritySliderFormField

export function SimilaritySliderFormField({
  vectorSimilarityWeightName = 'vector_similarity_weight',
  isTooltipShown,
}: SimilaritySliderFormFieldProps) {
  const { t } = useTranslate('knowledgeDetails');
  const isVector = vectorSimilarityWeightName === 'vector_similarity_weight';

  return (
    <>
      <SliderInputFormField
        name={'similarity_threshold'}
        label={t('similarityThreshold')}
        max={1}
        step={0.01}
        tooltip={isTooltipShown && t('similarityThresholdTip')}
      ></SliderInputFormField>
      <SliderInputFormField
        name={vectorSimilarityWeightName}
        label={t(
          isVector ? 'vectorSimilarityWeight' : 'keywordSimilarityWeight',
        )}
        max={1}
        step={0.01}
        tooltip={
          isTooltipShown &&
          t(
            isVector
              ? 'vectorSimilarityWeightTip'
              : 'keywordSimilarityWeightTip',
          )
        }
      ></SliderInputFormField>
    </>
  );
}
<SimilaritySliderFormField vectorSimilarityWeightName="keyword_similarity_weight" isTooltipShown={true} />

Implementation Details and Algorithms


Interaction with Other Parts of the System


Visual Diagram

componentDiagram
    component "SimilaritySlider" {
      +isTooltipShown: boolean (optional)
      +vectorSimilarityWeightName: string (optional)
      +returns JSX.Element (Antd Form Items with Sliders)
    }
    component "SimilaritySliderFormField" {
      +isTooltipShown: boolean (optional)
      +vectorSimilarityWeightName: string (optional)
      +returns JSX.Element (SliderInputFormField components)
    }
    component "SliderInputFormField" {
      +name: string
      +label: string
      +max: number
      +step: number
      +tooltip: string (optional)
    }
    component "useTranslate" {
      +t(key: string): string
    }

    "SimilaritySlider" --> "useTranslate"
    "SimilaritySliderFormField" --> "useTranslate"
    "SimilaritySliderFormField" --> "SliderInputFormField"

Summary

This file provides reusable, localized slider input components for configuring similarity thresholds and weights in a form, with support for tooltips and validation. It cleanly separates UI concerns from validation schemas and initial values, enabling consistent usage across the application. The ability to switch between vector and keyword similarity weight input by prop enhances flexibility.


End of Documentation for index.tsx