FromConfig builds retrieval adapters from knowledge_bases.
(cfg *config.Config)
| 10 | |
| 11 | // FromConfig builds retrieval adapters from knowledge_bases. |
| 12 | func FromConfig(cfg *config.Config) map[string]interfaces.RetrievalAdapter { |
| 13 | out := make(map[string]interfaces.RetrievalAdapter) |
| 14 | if cfg == nil { |
| 15 | return out |
| 16 | } |
| 17 | for _, kb := range cfg.KnowledgeBases { |
| 18 | typ := strings.ToLower(strings.TrimSpace(kb.Type)) |
| 19 | switch typ { |
| 20 | case "file": |
| 21 | a, err := NewFileKB(kb.Name, kb.Path) |
| 22 | if err != nil { |
| 23 | log.Printf("event=retrieval_init_failed name=%s type=file err=%v", kb.Name, err) |
| 24 | continue |
| 25 | } |
| 26 | out[kb.Name] = a |
| 27 | case "http": |
| 28 | a, err := NewHTTPJSONKB(kb) |
| 29 | if err != nil { |
| 30 | log.Printf("event=retrieval_init_failed name=%s type=http err=%v", kb.Name, err) |
| 31 | continue |
| 32 | } |
| 33 | out[kb.Name] = a |
| 34 | case "opensearch", "elasticsearch": |
| 35 | a, err := NewOpenSearchKB(kb) |
| 36 | if err != nil { |
| 37 | log.Printf("event=retrieval_init_failed name=%s type=%s err=%v", kb.Name, typ, err) |
| 38 | continue |
| 39 | } |
| 40 | out[kb.Name] = a |
| 41 | case "meilisearch": |
| 42 | a, err := NewMeilisearchKB(kb) |
| 43 | if err != nil { |
| 44 | log.Printf("event=retrieval_init_failed name=%s type=meilisearch err=%v", kb.Name, err) |
| 45 | continue |
| 46 | } |
| 47 | out[kb.Name] = a |
| 48 | default: |
| 49 | log.Printf("event=retrieval_init_skipped name=%s type=%s reason=%q", kb.Name, kb.Type, "unknown type at runtime (validate config)") |
| 50 | } |
| 51 | } |
| 52 | return out |
| 53 | } |