Kaynağa Gözat

chore: adjust types for query and search api (#846)

Signed-off-by: ryjiang <jiangruiyi@gmail.com>
ryjiang 1 hafta önce
ebeveyn
işleme
f525914b42

+ 2 - 11
client/src/http/Collection.service.ts

@@ -8,9 +8,8 @@ import {
   CountObject,
   StatisticsObject,
   ResStatus,
-  DescribeIndexRes,
-  IndexObject,
   MmapChanges,
+  QueryResults,
 } from '@server/types';
 import { ManageRequestMethods } from '@/consts';
 import type {
@@ -120,14 +119,6 @@ export class CollectionService extends BaseModel {
     });
   }
 
-  static async describeIndex(collectionName: string): Promise<IndexObject[]> {
-    const res = await super.find<DescribeIndexRes>({
-      path: `/collections/index`,
-      params: { collection_name: collectionName },
-    });
-    return res.index_descriptions;
-  }
-
   static async createIndex(param: IndexCreateParam) {
     const path = `/collections/index`;
     const type: ManageRequestMethods = ManageRequestMethods.CREATE;
@@ -149,7 +140,7 @@ export class CollectionService extends BaseModel {
   }
 
   static queryData(collectionName: string, params: QueryParam) {
-    return super.query({
+    return super.query<QueryResults>({
       path: `/collections/${collectionName}/query`,
       data: params,
     });

+ 6 - 2
client/src/http/Data.service.ts

@@ -1,7 +1,11 @@
 import BaseModel from './BaseModel';
 import type { LoadSampleParam } from '@/pages/dialogs/Types';
-import type { InsertDataParam, DeleteEntitiesReq } from '@/pages/databases/collections/Types';
+import type {
+  InsertDataParam,
+  DeleteEntitiesReq,
+} from '@/pages/databases/collections/Types';
 import type { VectorSearchParam } from '@/types/SearchTypes';
+import type { VectorSearchResults } from '@server/types';
 
 export class DataService extends BaseModel {
   static importSample(collectionName: string, param: LoadSampleParam) {
@@ -48,7 +52,7 @@ export class DataService extends BaseModel {
   }
 
   static vectorSearchData(collectionName: string, params: VectorSearchParam) {
-    return super.query({
+    return super.query<VectorSearchResults>({
       path: `/collections/${collectionName}/search`,
       data: params,
     });

+ 2 - 2
client/src/pages/databases/collections/search/DataExplorer.tsx

@@ -5,7 +5,7 @@ import { cloneObj } from '@/utils';
 import { getDataExplorerStyle } from './Styles';
 import DataPanel from './DataPanel';
 import type { GraphData, GraphNode, GraphLink } from '../../types';
-
+import type { SearchResultData } from '@server/types';
 
 interface DataExplorerProps {
   data: GraphData;
@@ -34,7 +34,7 @@ export const formatMilvusData = (
     id: string;
     [key: string]: any;
   },
-  results: any[]
+  results: SearchResultData[]
 ) => {
   const graphDataCopy = cloneObj(graphData) as GraphData;
   // if searchedVector's id is 'root', color = 0

+ 10 - 7
client/src/pages/databases/collections/search/Search.tsx

@@ -37,7 +37,6 @@ import DataExplorer, { formatMilvusData } from './DataExplorer';
 import {
   SearchParams as SearchParamsType,
   SearchSingleParams,
-  SearchResultView,
 } from '../../types';
 import { DYNAMIC_FIELD } from '@/consts';
 import CodeDialog from '@/pages/dialogs/CodeDialog';
@@ -45,7 +44,11 @@ import CollectionColHeader from '../CollectionColHeader';
 import DataView from '@/components/DataView/DataView';
 import type { GraphData, GraphNode } from '../../types';
 import type { ColDefinitionsType } from '@/components/grid/Types';
-import type { CollectionObject, CollectionFullObject } from '@server/types';
+import type {
+  CollectionObject,
+  CollectionFullObject,
+  VectorSearchResults,
+} from '@server/types';
 
 export interface CollectionDataProps {
   collectionName: string;
@@ -177,7 +180,7 @@ const Search = (props: CollectionDataProps) => {
 
   // set search result
   const setSearchResult = useCallback(
-    (props: { results: SearchResultView[]; latency: number }) => {
+    (props: VectorSearchResults) => {
       const { results, latency } = props;
       const s = cloneObj(searchParams) as SearchParamsType;
       s.searchResult = results;
@@ -259,7 +262,7 @@ const Search = (props: CollectionDataProps) => {
   );
 
   const searchResultMemo = useSearchResult(
-    (searchParams && (searchParams.searchResult as SearchResultView[])) || []
+    (searchParams && searchParams.searchResult) || []
   );
 
   let primaryKeyField = 'id';
@@ -474,9 +477,9 @@ const Search = (props: CollectionDataProps) => {
                       indexType={field.index.indexType}
                       indexParams={field.index_params}
                       searchParamsForm={s.params}
-                      handleFormChange={(
-                        updates: { [key in string]: number | string }
-                      ) => {
+                      handleFormChange={(updates: {
+                        [key in string]: number | string;
+                      }) => {
                         updateSearchParamCallback(updates as any, index);
                       }}
                       topK={searchParams.globalParams.topK}

+ 2 - 8
client/src/pages/databases/types.ts

@@ -2,6 +2,7 @@ import type {
   FieldObject,
   CollectionObject,
   PartitionData,
+  SearchResultData
 } from '@server/types';
 
 export type SearchSingleParams = {
@@ -25,13 +26,6 @@ export type GlobalParams = {
   output_fields: string[];
 };
 
-export type SearchResultView = {
-  // dynamic field names
-  [key: string]: any;
-  rank: number;
-  distance: number;
-};
-
 export type GraphNode = {
   id: string;
   data: any;
@@ -58,7 +52,7 @@ export type SearchParams = {
   partitions: PartitionData[];
   searchParams: SearchSingleParams[];
   globalParams: GlobalParams;
-  searchResult: SearchResultView[] | null;
+  searchResult: SearchResultData[] | null;
   graphData: GraphData;
   searchLatency: number;
 };

+ 6 - 0
server/src/types/collections.type.ts

@@ -9,6 +9,7 @@ import {
   QuerySegmentInfo,
   PersistentSegmentInfo,
   FunctionType,
+  SearchResults,
 } from '@zilliz/milvus2-sdk-node';
 import { WS_EVENTS, WS_EVENTS_TYPE, LOADING_STATE } from '../utils';
 
@@ -127,3 +128,8 @@ export interface MmapChanges {
   rawMmapEnabled?: boolean;
   indexMmapEnabled?: boolean;
 }
+
+
+export type VectorSearchResults = SearchResults & {
+  latency: number;
+}

+ 2 - 0
server/src/types/index.ts

@@ -6,6 +6,8 @@ export {
   RerankerObj,
   TypeParamKey,
   TypeParam,
+  QueryResults,
+  SearchResultData,
 } from '@zilliz/milvus2-sdk-node';
 
 export * from './collections.type';