Isang Upgrade sa Aking Kasalukuyang Chatbot
In-upgrade ko ang aking chatbot na si Sydney para subukan ang hybrid search ng Weaviate at query structuring—mga features na kailangan ko para i-scale ang aking financial chatbot sa 500+ na mga kumpanya.
Update (2026): Malayo na ang narating ni Sydney mula sa Weaviate experiment na ito. Pagkatapos subukan ang FAISS, Weaviate, at iba pa, nagsettle ako sa Supabase pgvector para sa production version. Si Sydney ngayon ay tumatakbo sa Claude na may streaming responses at tool use. Ang hybrid search at query structuring ideas sa ibaba ay direktang nag-impluwensya kung paano gumagana si Sydney ngayon.
Orihinal na post mula Mayo 2024, napanatili sa ibaba para sa konteksto.
Gaya ng nabanggit sa aking pinakahuling post, nagtatrabaho ako sa isang self-evaluating Financial Chatbot. Kaya bakit ang detour para i-update ang kasalukuyang chatbot na si Sydney? Well, ilang dahilan:
- Subukan ang Weaviate vector store nang end to end:
- Sinusubukan kong gamitin ang Weaviate bilang pangunahing vector store para sa financial chatbot pero nakakaranas ako ng problema sa scaling/memory size. Partikular, sa huling 10 taon lamang ng 10K at 10Q filings para sa halos 20 kumpanya, 2GB na ang laki ng weaviate collection. Kaya sa kasalukuyang approach, ang buong S&P 500 companies ay nangangahulugan ng collection na halos 50+ GB. Masyadong malaki at magkakahalaga ng maraming pera para patakbuhin/panatilihin. Kaya sinusubukan kong mag-test ng iba't ibang Product Quantization (PQ) parameters.
- Pagkatapos subukan ang maraming ibang vector stores, kumikiling ako sa Weaviate dahil sa kakayahan nitong magsagawa ng hybrid search na may metadata filters sa mabilis na bilis.
- Habang nagtatrabaho ako sa PQ para sa Weaviate, isang tanong na mayroon ako ay kung paano i-deploy ang Weaviate sa production environment, ibig sabihin, Weaviate Cloud o gamit ang AWS/Google Cloud? Magiging mahirap ba ang pag-deploy? Magkano ang magagastos?
- Dahil sa mga tanong na ito, nagdesisyon akong i-deploy ang Weaviate para sa kasalukuyang chatbot na si Sydney. Kaya basically papalitan ko ang FAISS ng Weaviate.
- Para sa kasalukuyang version, ginagamit ko ang Weaviate Cloud
- Mag-implement ng query translation at query structuring, habang sinisiguro na ang output ay nasa Json para magamit.
- Sa query translation, ang layunin ay hatiin ang input sa isang set ng specific na sub-problems o sub-questions na masasagot nang hiwalay.
- Sa query structuring: marami akong pakialam sa pag-generate hindi lang ng angkop na search term/phrases para sa hybrid search kundi pati ng angkop na metadata para sa filtering.
- Napakaimportante nito dahil gusto kong mag-filter nang tama ang financial chatbot para sa taon, industriya, atbp., kung kailan at saan kailangan.
- Paano magsagawa ng hybrid-search na may maraming filters at ibalik hindi lang ang content kundi pati ang metadata.
Gaya ng nakikita niyo, kailangan ko ang lahat ng nasa itaas na gumana para gumawa ng financial chatbot kaya bakit hindi subukang i-apply muna iyon sa mas maliit na scale sa chatbot na si Sydney :)
Masaya akong sabihin na maaari na ninyong subukan si Sydney ngayon. May lahat na ito ng mga functionality sa itaas. Maaari ninyong subukang magtanong ng mga katulad ng sa ibaba at dapat magbalik ang chatbot ng mga relevant na sagot na may mga links sa specific na blog posts kung saan nakuha ang content.
- Ano ang isinulat ni Chandler tungkol kay Kevin Rudd noong 2020?
- Sabihin mo sa akin ang lahat ng isinulat ni Chandler tungkol kay Ray Dalio mula 2020 hanggang ngayon
- Ano ang isinulat ni Chandler tungkol sa Health Savings Accounts noong 2022?
- Ano ang ginawa ni Chandler noong 2015?
Iyon na muna. Kailangan ko nang bumalik sa pagtatrabaho sa financial chatbot :P
Kung nag-experiment kayo sa Weaviate o hybrid search na may metadata filters, gusto kong marinig kung ano ang naging epektibo para sa inyo.
Maraming salamat,
Chandler
Update Set 2024
Si Sydney ngayon ay isang multi-talented agent na kayang:
- Sumagot ng mga tanong tungkol sa kasalukuyang mga kumpanya sa S&P 500, kabilang ang mga isinumite nila sa SEC sa nakaraang 10 taon.
- Magbigay ng mga insights mula sa 15 taon kong blog content.
Tingnan ito dito.
P.S: Sa ibaba ay mga halimbawa ng uri ng prompt na ginagamit ko para sa query translation at query structuring.
"You are a helpful assistant that generates multiple sub-questions related to an input question. "
"The current year is 2024."
"The goal is to break down the input into a set of specific sub-problems / sub-questions that can be answered in isolation. "
"Each specific sub-question will be used to retrieve relevant content from a vector store, using similarity search with score. "
"Phrase the wording of the questions appropriately for this purpose.\n"
"This vector store includes all of the published blog posts from Chandler Nguyen's blog from 2007 to 2024.\n\n"
"Original question: \{query\}\n\n"
"Generate the minimum number of sub-questions necessary to answer the original question. "
"Your response should be formatted as a JSON array of strings, where each string represents a sub-question. "
"Do not include any additional words, characters, or explanations in the response.\n\n"
"Example response:\n"
'[\n'
' "sub-question 1",\n'
' "sub-question 2"\n'
']'
"""You are a helpful assistant that generates a structured query related to an input question.
The goal is to break down the input into a structured query that can be used to retrieve relevant content from a vector store, using similarity search with score.
This vector store includes all of the published blog posts from Chandler Nguyen's blog from 2007 to 2024.
Original question: \{query\}
You must generate a response in JSON format as described below without any additional words or characters:
[
"content_search": Similarity search query used to apply to the content of the Chandler Nguyen published blog posts to find similar documents related to the sub-question(s). Ensure the content_search query is not too broad or too specific, and strikes a balance between relevance and completeness. \n
"start_date": optional field, the start date to search for blog posts that are relevant to the sub-question(s) in YYYY-MM-DD format. If the sub-question(s) do not specify a time frame, leave this field blank or set it to the earliest possible date (e.g., 2007-01-01) to cover a broader range. \n
"end_date": optional field, the end date to search for blog posts that are relevant to the sub-question(s) in YYYY-MM-DD format. If the sub-question(s) do not specify a time frame, leave this field blank or set it to the latest possible date (e.g., 2024-12-31) to cover a broader range. \n
]
If the sub-question(s) include multiple years or a specific time range, generate 1 response for each year or time range, enclosed in separate JSON objects within the outer array.
Example responses:
For an open-ended sub-question without a specific time frame:
Sub-questions: ["What are the key insights Chandler wrote about Health Savings Accounts (HSA)?"]
[
"content_search": "Chandler Nguyen blog posts about Health Savings Accounts",
"start_date": "2007-01-01",
"end_date": "2024-12-31"
]
For a sub-question specifying a year:
Sub-questions: ["What blog posts did Chandler write in 2018?", "Which blog posts written by Chandler in 2018 mention Kevin Rudd?"]
[
"content_search": "Chandler Nguyen blog posts in 2018",
"start_date": "2018-01-01",
"end_date": "2018-12-31"
],
[
"content_search": "Kevin Rudd mentioned in Chandler Nguyen blog posts in 2018",
"start_date": "2018-01-01",
"end_date": "2018-12-31"
]
For a sub-question specifying a time range:
Sub-questions: ["What did Chandler write about Ray Dalio in 2020?", "What did Chandler write about Ray Dalio in 2021?", "What did Chandler write about Ray Dalio in 2022?"]
[
"content_search": "Chandler Nguyen blog posts about Ray Dalio in 2020",
"start_date": "2020-01-01",
"end_date": "2020-12-31"
],
[
"content_search": "Chandler Nguyen blog posts about Ray Dalio in 2021",
"start_date": "2021-01-01",
"end_date": "2021-12-31"
],
[
"content_search": "Chandler Nguyen blog posts about Ray Dalio in 2022",
"start_date": "2022-01-01",
"end_date": "2022-12-31"
]
"""
P.P.S: Alam ko na napakabagal pa rin ng front end kaya kailangan ko marahil na matuto pa tungkol sa front end development.





