Feat: Add variables to the metadata filtering function of the knowledge retrieval component. #10861 (#10974)

### What problem does this PR solve?

Feat: Add variables to the metadata filtering function of the knowledge
retrieval component. #10861

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
balibabu
2025-11-03 19:59:45 +08:00
committed by GitHub
parent 3e5a39482e
commit be3ae0eda9
4 changed files with 23 additions and 4 deletions

View File

@ -8,6 +8,7 @@ import { MetadataFilterConditions } from './metadata-filter-conditions';
type MetadataFilterProps = { type MetadataFilterProps = {
prefix?: string; prefix?: string;
canReference?: boolean;
}; };
export const MetadataFilterSchema = { export const MetadataFilterSchema = {
@ -27,7 +28,10 @@ export const MetadataFilterSchema = {
.optional(), .optional(),
}; };
export function MetadataFilter({ prefix = '' }: MetadataFilterProps) { export function MetadataFilter({
prefix = '',
canReference,
}: MetadataFilterProps) {
const { t } = useTranslate('chat'); const { t } = useTranslate('chat');
const form = useFormContext(); const form = useFormContext();
@ -68,6 +72,7 @@ export function MetadataFilter({ prefix = '' }: MetadataFilterProps) {
<MetadataFilterConditions <MetadataFilterConditions
kbIds={kbIds} kbIds={kbIds}
prefix={prefix} prefix={prefix}
canReference={canReference}
></MetadataFilterConditions> ></MetadataFilterConditions>
)} )}
</> </>

View File

@ -17,6 +17,7 @@ import { Input } from '@/components/ui/input';
import { Separator } from '@/components/ui/separator'; import { Separator } from '@/components/ui/separator';
import { useFetchKnowledgeMetadata } from '@/hooks/use-knowledge-request'; import { useFetchKnowledgeMetadata } from '@/hooks/use-knowledge-request';
import { SwitchOperatorOptions } from '@/pages/agent/constant'; import { SwitchOperatorOptions } from '@/pages/agent/constant';
import { PromptEditor } from '@/pages/agent/form/components/prompt-editor';
import { useBuildSwitchOperatorOptions } from '@/pages/agent/form/switch-form'; import { useBuildSwitchOperatorOptions } from '@/pages/agent/form/switch-form';
import { Plus, X } from 'lucide-react'; import { Plus, X } from 'lucide-react';
import { useCallback } from 'react'; import { useCallback } from 'react';
@ -26,9 +27,11 @@ import { useTranslation } from 'react-i18next';
export function MetadataFilterConditions({ export function MetadataFilterConditions({
kbIds, kbIds,
prefix = '', prefix = '',
canReference,
}: { }: {
kbIds: string[]; kbIds: string[];
prefix?: string; prefix?: string;
canReference?: boolean;
}) { }) {
const { t } = useTranslation(); const { t } = useTranslation();
const form = useFormContext(); const form = useFormContext();
@ -117,7 +120,18 @@ export function MetadataFilterConditions({
render={({ field }) => ( render={({ field }) => (
<FormItem className="flex-1 overflow-hidden"> <FormItem className="flex-1 overflow-hidden">
<FormControl> <FormControl>
<Input placeholder={t('common.pleaseInput')} {...field} /> {canReference ? (
<PromptEditor
{...field}
multiLine={false}
showToolbar={false}
></PromptEditor>
) : (
<Input
placeholder={t('common.pleaseInput')}
{...field}
/>
)}
</FormControl> </FormControl>
<FormMessage /> <FormMessage />
</FormItem> </FormItem>

View File

@ -123,7 +123,7 @@ function RetrievalForm({ node }: INextOperatorForm) {
></SimilaritySliderFormField> ></SimilaritySliderFormField>
<TopNFormField></TopNFormField> <TopNFormField></TopNFormField>
<RerankFormFields></RerankFormFields> <RerankFormFields></RerankFormFields>
<MetadataFilter></MetadataFilter> <MetadataFilter canReference></MetadataFilter>
<EmptyResponseField></EmptyResponseField> <EmptyResponseField></EmptyResponseField>
<CrossLanguageFormField name="cross_languages"></CrossLanguageFormField> <CrossLanguageFormField name="cross_languages"></CrossLanguageFormField>
<UseKnowledgeGraphFormField name="use_kg"></UseKnowledgeGraphFormField> <UseKnowledgeGraphFormField name="use_kg"></UseKnowledgeGraphFormField>

View File

@ -52,7 +52,7 @@ const RetrievalForm = () => {
></SimilaritySliderFormField> ></SimilaritySliderFormField>
<TopNFormField></TopNFormField> <TopNFormField></TopNFormField>
<RerankFormFields></RerankFormFields> <RerankFormFields></RerankFormFields>
<MetadataFilter></MetadataFilter> <MetadataFilter canReference></MetadataFilter>
<EmptyResponseField></EmptyResponseField> <EmptyResponseField></EmptyResponseField>
<CrossLanguageFormField name="cross_languages"></CrossLanguageFormField> <CrossLanguageFormField name="cross_languages"></CrossLanguageFormField>
<UseKnowledgeGraphFormField name="use_kg"></UseKnowledgeGraphFormField> <UseKnowledgeGraphFormField name="use_kg"></UseKnowledgeGraphFormField>