MCPcopy Create free account
hub / github.com/InferCore/InferCore / Retrieve

Method Retrieve

internal/retrieval/opensearch_kb.go:45–99  ·  view source on GitHub ↗
(ctx context.Context, query string, opts map[string]any)

Source from the content-addressed store, hash-verified

43func (o *OpenSearchKB) Name() string { return o.name }
44
45func (o *OpenSearchKB) Retrieve(ctx context.Context, query string, opts map[string]any) (types.RetrievalResult, error) {
46 topK := effectiveTopK(o.cfg, opts, 8)
47 q := map[string]any{
48 "size": topK,
49 "query": map[string]any{
50 "multi_match": map[string]any{
51 "query": query,
52 "fields": o.fields,
53 "type": "best_fields",
54 },
55 },
56 "_source": true,
57 }
58 raw, err := json.Marshal(q)
59 if err != nil {
60 return types.RetrievalResult{}, err
61 }
62 base := strings.TrimRight(strings.TrimSpace(o.cfg.Endpoint), "/")
63 index := strings.Trim(strings.TrimSpace(o.cfg.Index), "/")
64 url := base + "/" + index + "/_search"
65 req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(raw))
66 if err != nil {
67 return types.RetrievalResult{}, err
68 }
69 req.Header.Set("Content-Type", "application/json")
70 for k, v := range o.cfg.Headers {
71 if strings.TrimSpace(k) != "" && strings.TrimSpace(v) != "" {
72 req.Header.Set(k, v)
73 }
74 }
75 if req.Header.Get("Authorization") == "" {
76 if k := strings.TrimSpace(o.cfg.APIKey); k != "" {
77 switch {
78 case strings.HasPrefix(k, "Basic "), strings.HasPrefix(k, "Bearer "), strings.HasPrefix(k, "ApiKey "):
79 req.Header.Set("Authorization", k)
80 default:
81 req.Header.Set("Authorization", "ApiKey "+k)
82 }
83 }
84 }
85
86 resp, err := o.client.Do(req)
87 if err != nil {
88 return types.RetrievalResult{}, err
89 }
90 defer resp.Body.Close()
91 b, err := io.ReadAll(resp.Body)
92 if err != nil {
93 return types.RetrievalResult{}, err
94 }
95 if resp.StatusCode < 200 || resp.StatusCode >= 300 {
96 return types.RetrievalResult{}, fmt.Errorf("opensearch %s: %s: %s", o.name, resp.Status, truncateForErr(b, 512))
97 }
98 return parseOpenSearchHits(b)
99}
100
101func parseOpenSearchHits(b []byte) (types.RetrievalResult, error) {
102 var root struct {

Callers

nothing calls this directly

Calls 4

effectiveTopKFunction · 0.85
truncateForErrFunction · 0.85
parseOpenSearchHitsFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected