Adding Hybrid Search to Your Application (In Diagrams)
What Product Team Wants
graph LR
user[User] -->|Search| app["<span style='color:black'>Application</span>"]
app -->|Results| user
app <--> ai["<span style='color:black'>AI/ML</span>"]@{shape: cloud}
classDef code fill:#ccf
class app code
classDef gold fill:#ffd
class ai gold
How Dev Team Wishes It Worked
graph LR
user[User] -->|Search| app["<span style='color:black'>Application</span>"]
app -->|Query| se["<span style='color:black'>Search Engine + Vectors</span>"]
app -->|add/update/delete| se
app -->|add/update/delete| db[("Database")]
se -->|Results| app
app -->|Results| user
classDef code fill:#ccf
class app code
classDef search fill:#dfd,font-weight:bold
class se search
What Dev Team Has to Build
graph LR
user[User] -->|Search| app["<span style='color:black'>Application</span>"]
app -->|add/update/delete| db[(Database)]
app --> queue[Queue Service]@{shape: stadium}
queue --> A
db --> A
D -->|Update Index| se
app <-->|Embed Query| D
app -->|Query| se["<span style='color:black'>Search Engine + Vectors</span>"]
se -->|Results| app
app -->|Results| user
subgraph pipe["<span style='color:black;font-weight:bold'>Ingestion & Embedding Pipeline</span>"]
A["<span style='color:black'>Distributed Locking</span>"]@{ shape: bang}
B["<span style='color:black'>Retries</span>"]@{ shape: bang}
C["<span style='color:black'>Deduplication</span>"]@{ shape: bang}
D["<span style='color:black'>Model Embedding</span>"]@{ shape: bang}
E["<span style='color:black'>API Calls</span>"]@{ shape: bang}
F["<span style='color:black'>Model Management</span>"]@{ shape: bang}
G["<span style='color:black'>Batching</span>"]@{ shape: bang}
H["<span style='color:black'>Worker Scaling</span>"]@{ shape: bang}
A --> C
C --> G
%% B <--> D
D --> E
%% D <--> B
%% E <--> B
D --> F
G --> D
%% F <--> B
A ~~~ H
H ~~~ B
B ~~~ G
end
classDef code fill:#ccf
class app code
classDef work fill:#fdd
class A,B,C,D,E,F,G,H work
style pipe fill:transparent,stroke-dasharray:5 5
classDef search fill:#dfd,font-weight:bold
class se search
What Dev Team Could Do with Amgix
graph LR
user[User] -->|Search| app["<span style='color:black'>Application</span>"]
app -->|add/update/delete| amgix
app -->|add/update/delete| db[("Database")]
amgix["<span style='color:black'>Amgix</span>"]@{ shape: rect}
queue[RabbitMQ]@{shape: stadium}
app -->|Query| amgix
amgix -->|Results| app
amgix <--> queue
amgix <--> db
app -->|Results| user
classDef code fill:#ccf
classDef ai fill:#fdf,font-weight:bold
class app code
class amgix ai