ISSUE: [[Feature]: Support to search by primary keys #23184](https://github.com/milvus-io/milvus/issues/23184)
Keywords: Search, ANN
Released: v2.3.0
## Summary
Support to search (ANNS) by the query vectors corresponding to the given primary keys.
## Motivation
For now, Milvus requires passing the query vectors to do anns, we have to fetch the vectors first if they are in the collection, which is complex and slow.
We need a way to do anns directly for the corresponding vectors of given primary keys, which should be more efficient.
## Public Interfaces
Add new field `primary_keys` in `SearchRequest`, all SDKs adds new method:
```golang
funcSearchByPK(
ctxcontext.Context,
collNamestring,
partitions[]string,
exprstring,
outputFields[]string,
primaryKeys[]entity.PrimaryKey,
vectorFieldstring,
metricTypeentity.MetricType,
topKint,
spentity.SearchParam,
opts...SearchQueryOptionFunc,
)([]SearchResult,error)
```
## Design Details
Proxy fetches the vectors by primary keys from QueryNodes first, and then search with these vectors.
For better performance, we will add a new RPC interface for QueryNode:
```proto
rpcFetch(FetchRequest)returns(FetchResponse){}
```
which only supports to fetch by primary keys, this will be more efficient than the present `Query` interface.