milvus/pkg/proto/modelservicepb/model_service_grpc.pb.go
junjiejiangjjj 1100d8f7e2
feat: Add semantic highlight (#46189)
https://github.com/milvus-io/milvus/issues/42589

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Semantic Highlighting Feature

**Core Invariant**: Semantic highlighting operates on a per-field basis
with independent text processing through an external Zilliz highlight
provider. The implementation maintains field ID to field name mapping
and correlates highlight results back to original field outputs.

**What is Added**: This PR introduces semantic highlighting capability
for search results alongside the existing lexical highlighting. The
feature consists of:
- New `SemanticHighlight` orchestrator that validates queries/input
fields against collection schema, instantiates a Zilliz-based provider,
and batches text processing across multiple queries
- New `SemanticHighlighter` proxy wrapper implementing the `Highlighter`
interface for search pipeline integration
- New `semanticHighlightOperator` that processes search results by
delegating per-field text processing to the provider and attaching
correlated `HighlightResult` data to search outputs
- New gRPC service definition (`HighlightService`) and
`ZillizClient.Highlight()` method for external provider communication

**No Data Loss or Regression**: The change is purely additive without
modifying existing logic:
- Lexical highlighting path remains unchanged (separate switch case in
`createHighlightTask`)
- New `HighlightResults` field is only populated when semantic
highlighting is explicitly requested via `HighlightType_Semantic` enum
value
- Gracefully handles missing fields by returning explicit errors rather
than silent failures
- Pipeline operator integration follows existing patterns and only
processes when semantic highlighter is instantiated

**Why This Design**: Semantic highlighting is routed through the same
pipeline operator pattern as lexical highlighting, ensuring consistent
integration into search workflows. The per-field model allows flexible
highlighting across different text columns and batch processing ensures
efficient handling of multiple queries with configurable provider
constraints.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: junjie.jiang <junjie.jiang@zilliz.com>
2025-12-31 11:41:22 +08:00

284 lines
10 KiB
Go

// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.21.4
// source: model_service.proto
package modelservicepb
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
TextEmbeddingService_Embedding_FullMethodName = "/milvus.proto.modelservice.TextEmbeddingService/Embedding"
)
// TextEmbeddingServiceClient is the client API for TextEmbeddingService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type TextEmbeddingServiceClient interface {
Embedding(ctx context.Context, in *TextEmbeddingRequest, opts ...grpc.CallOption) (*TextEmbeddingResponse, error)
}
type textEmbeddingServiceClient struct {
cc grpc.ClientConnInterface
}
func NewTextEmbeddingServiceClient(cc grpc.ClientConnInterface) TextEmbeddingServiceClient {
return &textEmbeddingServiceClient{cc}
}
func (c *textEmbeddingServiceClient) Embedding(ctx context.Context, in *TextEmbeddingRequest, opts ...grpc.CallOption) (*TextEmbeddingResponse, error) {
out := new(TextEmbeddingResponse)
err := c.cc.Invoke(ctx, TextEmbeddingService_Embedding_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TextEmbeddingServiceServer is the server API for TextEmbeddingService service.
// All implementations should embed UnimplementedTextEmbeddingServiceServer
// for forward compatibility
type TextEmbeddingServiceServer interface {
Embedding(context.Context, *TextEmbeddingRequest) (*TextEmbeddingResponse, error)
}
// UnimplementedTextEmbeddingServiceServer should be embedded to have forward compatible implementations.
type UnimplementedTextEmbeddingServiceServer struct {
}
func (UnimplementedTextEmbeddingServiceServer) Embedding(context.Context, *TextEmbeddingRequest) (*TextEmbeddingResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Embedding not implemented")
}
// UnsafeTextEmbeddingServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to TextEmbeddingServiceServer will
// result in compilation errors.
type UnsafeTextEmbeddingServiceServer interface {
mustEmbedUnimplementedTextEmbeddingServiceServer()
}
func RegisterTextEmbeddingServiceServer(s grpc.ServiceRegistrar, srv TextEmbeddingServiceServer) {
s.RegisterService(&TextEmbeddingService_ServiceDesc, srv)
}
func _TextEmbeddingService_Embedding_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TextEmbeddingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TextEmbeddingServiceServer).Embedding(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TextEmbeddingService_Embedding_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TextEmbeddingServiceServer).Embedding(ctx, req.(*TextEmbeddingRequest))
}
return interceptor(ctx, in, info, handler)
}
// TextEmbeddingService_ServiceDesc is the grpc.ServiceDesc for TextEmbeddingService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var TextEmbeddingService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "milvus.proto.modelservice.TextEmbeddingService",
HandlerType: (*TextEmbeddingServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Embedding",
Handler: _TextEmbeddingService_Embedding_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "model_service.proto",
}
const (
RerankService_Rerank_FullMethodName = "/milvus.proto.modelservice.RerankService/Rerank"
)
// RerankServiceClient is the client API for RerankService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type RerankServiceClient interface {
Rerank(ctx context.Context, in *TextRerankRequest, opts ...grpc.CallOption) (*TextRerankResponse, error)
}
type rerankServiceClient struct {
cc grpc.ClientConnInterface
}
func NewRerankServiceClient(cc grpc.ClientConnInterface) RerankServiceClient {
return &rerankServiceClient{cc}
}
func (c *rerankServiceClient) Rerank(ctx context.Context, in *TextRerankRequest, opts ...grpc.CallOption) (*TextRerankResponse, error) {
out := new(TextRerankResponse)
err := c.cc.Invoke(ctx, RerankService_Rerank_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// RerankServiceServer is the server API for RerankService service.
// All implementations should embed UnimplementedRerankServiceServer
// for forward compatibility
type RerankServiceServer interface {
Rerank(context.Context, *TextRerankRequest) (*TextRerankResponse, error)
}
// UnimplementedRerankServiceServer should be embedded to have forward compatible implementations.
type UnimplementedRerankServiceServer struct {
}
func (UnimplementedRerankServiceServer) Rerank(context.Context, *TextRerankRequest) (*TextRerankResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Rerank not implemented")
}
// UnsafeRerankServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to RerankServiceServer will
// result in compilation errors.
type UnsafeRerankServiceServer interface {
mustEmbedUnimplementedRerankServiceServer()
}
func RegisterRerankServiceServer(s grpc.ServiceRegistrar, srv RerankServiceServer) {
s.RegisterService(&RerankService_ServiceDesc, srv)
}
func _RerankService_Rerank_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TextRerankRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RerankServiceServer).Rerank(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: RerankService_Rerank_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RerankServiceServer).Rerank(ctx, req.(*TextRerankRequest))
}
return interceptor(ctx, in, info, handler)
}
// RerankService_ServiceDesc is the grpc.ServiceDesc for RerankService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var RerankService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "milvus.proto.modelservice.RerankService",
HandlerType: (*RerankServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Rerank",
Handler: _RerankService_Rerank_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "model_service.proto",
}
const (
HighlightService_Highlight_FullMethodName = "/milvus.proto.modelservice.HighlightService/Highlight"
)
// HighlightServiceClient is the client API for HighlightService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type HighlightServiceClient interface {
Highlight(ctx context.Context, in *HighlightRequest, opts ...grpc.CallOption) (*HighlightResponse, error)
}
type highlightServiceClient struct {
cc grpc.ClientConnInterface
}
func NewHighlightServiceClient(cc grpc.ClientConnInterface) HighlightServiceClient {
return &highlightServiceClient{cc}
}
func (c *highlightServiceClient) Highlight(ctx context.Context, in *HighlightRequest, opts ...grpc.CallOption) (*HighlightResponse, error) {
out := new(HighlightResponse)
err := c.cc.Invoke(ctx, HighlightService_Highlight_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// HighlightServiceServer is the server API for HighlightService service.
// All implementations should embed UnimplementedHighlightServiceServer
// for forward compatibility
type HighlightServiceServer interface {
Highlight(context.Context, *HighlightRequest) (*HighlightResponse, error)
}
// UnimplementedHighlightServiceServer should be embedded to have forward compatible implementations.
type UnimplementedHighlightServiceServer struct {
}
func (UnimplementedHighlightServiceServer) Highlight(context.Context, *HighlightRequest) (*HighlightResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Highlight not implemented")
}
// UnsafeHighlightServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to HighlightServiceServer will
// result in compilation errors.
type UnsafeHighlightServiceServer interface {
mustEmbedUnimplementedHighlightServiceServer()
}
func RegisterHighlightServiceServer(s grpc.ServiceRegistrar, srv HighlightServiceServer) {
s.RegisterService(&HighlightService_ServiceDesc, srv)
}
func _HighlightService_Highlight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(HighlightRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(HighlightServiceServer).Highlight(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: HighlightService_Highlight_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(HighlightServiceServer).Highlight(ctx, req.(*HighlightRequest))
}
return interceptor(ctx, in, info, handler)
}
// HighlightService_ServiceDesc is the grpc.ServiceDesc for HighlightService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var HighlightService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "milvus.proto.modelservice.HighlightService",
HandlerType: (*HighlightServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Highlight",
Handler: _HighlightService_Highlight_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "model_service.proto",
}