Feat: Add the option to use the knowledge graph to the retrieval form #3221 (#8968)

### What problem does this PR solve?

Feat: Add the option to use the knowledge graph to the retrieval form
#3221
### Type of change


- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
balibabu
2025-07-22 12:10:55 +08:00
committed by GitHub
parent af00f2cad8
commit 131fc10af5
8 changed files with 93 additions and 60 deletions

View File

@ -265,6 +265,8 @@ export const initialRetrievalValues = {
empty_response: '',
...initialSimilarityThresholdValue,
...initialKeywordsSimilarityWeightValue,
use_kg: false,
cross_languages: [],
outputs: {
formalized_content: {
type: 'string',

View File

@ -1,3 +1,4 @@
import { CrossLanguageFormField } from '@/components/cross-language-form-field';
import { FormContainer } from '@/components/form-container';
import { KnowledgeBaseFormField } from '@/components/knowledge-base-item';
import { RerankFormFields } from '@/components/rerank';
@ -12,6 +13,7 @@ import {
FormMessage,
} from '@/components/ui/form';
import { Textarea } from '@/components/ui/textarea';
import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-item';
import { zodResolver } from '@hookform/resolvers/zod';
import { memo, useMemo } from 'react';
import { useForm, useFormContext } from 'react-hook-form';
@ -32,6 +34,8 @@ export const RetrievalPartialSchema = {
kb_ids: z.array(z.string()),
rerank_id: z.string(),
empty_response: z.string(),
cross_languages: z.array(z.string()),
use_kg: z.boolean(),
};
export const FormSchema = z.object({
@ -106,6 +110,8 @@ function RetrievalForm({ node }: INextOperatorForm) {
<TopNFormField></TopNFormField>
<RerankFormFields></RerankFormFields>
<EmptyResponseField></EmptyResponseField>
<CrossLanguageFormField name="cross_languages"></CrossLanguageFormField>
<UseKnowledgeGraphFormField name="use_kg"></UseKnowledgeGraphFormField>
</FormContainer>
<Output list={outputList}></Output>
</form>

View File

@ -1,9 +1,11 @@
import { CrossLanguageFormField } from '@/components/cross-language-form-field';
import { FormContainer } from '@/components/form-container';
import { KnowledgeBaseFormField } from '@/components/knowledge-base-item';
import { RerankFormFields } from '@/components/rerank';
import { SimilaritySliderFormField } from '@/components/similarity-slider';
import { TopNFormField } from '@/components/top-n-item';
import { Form } from '@/components/ui/form';
import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-item';
import { zodResolver } from '@hookform/resolvers/zod';
import { useForm } from 'react-hook-form';
import { z } from 'zod';
@ -50,6 +52,8 @@ const RetrievalForm = () => {
<TopNFormField></TopNFormField>
<RerankFormFields></RerankFormFields>
<EmptyResponseField></EmptyResponseField>
<CrossLanguageFormField name="cross_languages"></CrossLanguageFormField>
<UseKnowledgeGraphFormField name="use_kg"></UseKnowledgeGraphFormField>
</FormContainer>
</form>
</Form>

View File

@ -4,7 +4,7 @@ import { zodResolver } from '@hookform/resolvers/zod';
import { useForm, useWatch } from 'react-hook-form';
import { z } from 'zod';
import { CrossLanguageItem } from '@/components/cross-language-item-ui';
import { CrossLanguageFormField } from '@/components/cross-language-form-field';
import { FormContainer } from '@/components/form-container';
import {
initialTopKValue,
@ -32,7 +32,7 @@ import { UseKnowledgeGraphFormField } from '@/components/use-knowledge-graph-ite
import { useTestRetrieval } from '@/hooks/use-knowledge-request';
import { trim } from 'lodash';
import { CirclePlay } from 'lucide-react';
import { useEffect, useState } from 'react';
import { useEffect } from 'react';
import { useTranslation } from 'react-i18next';
type TestingFormProps = Pick<
@ -46,7 +46,6 @@ export default function TestingForm({
setValues,
}: TestingFormProps) {
const { t } = useTranslation();
const [cross_languages, setCrossLangArr] = useState<string[]>([]);
const formSchema = z.object({
question: z.string().min(1, {
@ -71,9 +70,8 @@ export default function TestingForm({
const values = useWatch({ control: form.control });
useEffect(() => {
// setValues(values as Required<z.infer<typeof formSchema>>);
setValues({ ...values, cross_languages });
}, [setValues, values, cross_languages]);
setValues(values as Required<z.infer<typeof formSchema>>);
}, [setValues, values]);
function onSubmit() {
refetch();
@ -89,12 +87,9 @@ export default function TestingForm({
></SimilaritySliderFormField>
<RerankFormFields></RerankFormFields>
<UseKnowledgeGraphFormField name="use_kg"></UseKnowledgeGraphFormField>
<CrossLanguageItem
<CrossLanguageFormField
name={'cross_languages'}
onChange={(valArr) => {
setCrossLangArr(valArr);
}}
></CrossLanguageItem>
></CrossLanguageFormField>
</FormContainer>
<FormField
control={form.control}