MCPcopy Create free account
hub / github.com/docker/docker-agent / handleQueryRAG

Method handleQueryRAG

pkg/tools/builtin/rag/rag.go:170–205  ·  view source on GitHub ↗
(ctx context.Context, args queryRAGArgs)

Source from the content-addressed store, hash-verified

168}
169
170func (t *ToolSet) handleQueryRAG(ctx context.Context, args queryRAGArgs) (*tools.ToolCallResult, error) {
171 if args.Query == "" {
172 return nil, errors.New("query cannot be empty")
173 }
174
175 results, err := t.manager.Query(ctx, args.Query)
176 if err != nil {
177 return nil, fmt.Errorf("RAG query failed: %w", err)
178 }
179
180 out := make([]queryResult, 0, len(results))
181 for _, r := range results {
182 out = append(out, queryResult{
183 SourcePath: r.Document.SourcePath,
184 Content: r.Document.Content,
185 Similarity: r.Similarity,
186 ChunkIndex: r.Document.ChunkIndex,
187 })
188 }
189
190 slices.SortFunc(out, func(a, b queryResult) int {
191 return cmp.Compare(b.Similarity, a.Similarity)
192 })
193
194 const maxResults = 10
195 if len(out) > maxResults {
196 out = out[:maxResults]
197 }
198
199 resultJSON, err := json.Marshal(out)
200 if err != nil {
201 return nil, fmt.Errorf("failed to marshal results: %w", err)
202 }
203
204 return tools.ResultSuccess(string(resultJSON)), nil
205}

Callers

nothing calls this directly

Implementers 15

StartableToolSetpkg/tools/startable.go
fakeToolSetpkg/tools/named_test.go
stubDescriberpkg/tools/startable_test.go
stubToolSetpkg/tools/startable_test.go
flappyToolSetpkg/tools/startable_test.go
listFlappyToolSetpkg/tools/startable_test.go
reportingToolSetpkg/tools/startable_test.go
reportingStartOnlyToolSetpkg/tools/startable_test.go
recoveryFailingToolSetpkg/tools/startable_test.go
codeModeToolpkg/tools/codemode/codemode.go
testToolSetpkg/tools/codemode/codemode_test.go
Toolsetpkg/tools/a2a/a2a.go

Calls 3

ResultSuccessFunction · 0.92
QueryMethod · 0.65
NewMethod · 0.45

Tested by

no test coverage detected