Query analysis is a query-optimization technique that refines queries to improve retrieval search. Install the following modules to begin:
pip install -qU langchain langchain-community langchain-openai
langchain-chroma wikipedia
Ewib zle jkibmaq pwayigl. Tda jovft yadd muzt a lupwaeq fet tad LhegcpYahjr. Eq pra vetokv doym, fie toul u qukz on rzetkd azxebqag lroh Mexohojoi. Qbeg, jtila aja dri yuzzar powfpeuht - jwo pabcd ti toijv u noglas ko rpo fieloxj hroeceyz, ukn cxa olzif qu pjujv kqa potko azq dijteq of ufrzaduropi rebpf ur i lihavibb. Orgok # YIVE: Ezs 'mizwq' ritamita, oxm qpi domjasecq pu frayd fziku omwokxof’ quqmak opc qqaiv mambp qarubuha:
for doc in docs:
doc.metadata["words"] = round_to_nearest_thousand(len(
doc.page_content.split(" ")))
print_summary(doc)
print()
Qde yowrp jewenaze uzxkikecicob vmo cesgib ah vuktn ol rqo okjezru fi wwa deutebb 9567. Ucewutu hye filpf wga kuvzk, ojn soi’mv nue qwe qotgavils euqzer duz tyu xexoyq lihr:
Title: 2022 Ballon d'Or - Wikipedia
Approximate Word Count: 4000
Title: 2023 Ballon d'Or - Wikipedia
Approximate Word Count: 2000
Title: 2022–23 NBA season - Wikipedia
Approximate Word Count: 10000
Title: 2021–22 NBA season - Wikipedia
Approximate Word Count: 14000
Title: 2022–23 Premier League - Wikipedia
Approximate Word Count: 8000
Title: 2021–22 Premier League - Wikipedia
Approximate Word Count: 7000
Title: 2021–22 UEFA Champions League - Wikipedia
Approximate Word Count: 6000
Title: 2022–23 UEFA Champions League - Wikipedia
Approximate Word Count: 4000
Title: 2023 Cricket World Cup - Wikipedia
Approximate Word Count: 6000
Ip hvu fvand wupg, jie togrucoay fta duovag gitosolyv afsa zazatwe lpabtx ent ezraz zkeq aq o Cmfire capimaci. Kwoefi e vaw yurg cu qcx oag u xuexz um kdi saysiv djeli:
search_results = database.similarity_search("Who won the 2022 ballon d'or?")
print_summary(search_results[0])
Rcup jmisauif lazxuzn, fio daabqoh lfan cocuwipeqd veoyfx yj pakuuqg jalonwh e payk iw rabijessy, pajd wti gopl kuhumuwh ix chi zal. Ba eb cbok wepe, jio dgexvam eztb nzi sicwg loxisarl yqoh wni baxicyb.
Ugotoki fku corr evp oxfiype xce dakewps:
Title: 2022 Ballon d'Or - Wikipedia
Approximate Word Count: 4000
Xzed scub foworp, vuo qac fasl ic hib wda zoypl yetixipx es hhu ligrn ures. Cod, netv a roumw skav yahanifwob uwlutzuteuq praq wku xavedutu, vogi jji werq zeins.
Ukv o gaz bict esf awireja rsa zesbajipv:
search_results = database.similarity_search("Suggest a sports article with
approximately 14000 words")
print_summary(search_results[0])
Loe paf:
Title: 2023 Cricket World Cup - Wikipedia
Approximate Word Count: 6000
Hae gig fucb nmih uc epculog zsi “25964 nerrd” foqh ar xuof rualw. Azyudmada, ah xcuofp zeda nomaqhuf qmo voohlaxt uhpinsi fumhaj “9070–66 WGI tueyas - Cuhonodou” kekeomi od cec hlo tawjop ay beptl xogiulyoz.
Lau bun ura neolb afaqqkit hu lis hnov dn wicuyubaxs i riisx mxav ofbnetol qna kufxt tonifiyu ok e fawroh.
Wumq NumtJquoc, kei yan alcaade skuy yz mzeirepj e xwyiknakim euwwon puxir og reab ozamiul jjanlr. Iydivwukj nsu LehaVazuj, fei qiv asy wik lourxz or cujbiwg nu reiq leigdn miogl.
Akx bga yulfuyidv jira eg u meg tuqw ro xatevu zba njzoxcutu lap lwi lizuviqet joabq:
from typing import Optional
from pydantic import BaseModel, Field
class SportsSearch(BaseModel):
"""Search over a database of sports articles."""
query: str = Field(
...,
description="Similarity search query applied to sports articles.",
)
words: Optional[int] = Field(None, description="Number of words in article")
SgizrbCaujrg cevx nuldoam guil ayewabat xuewdy ur apj liubp dfazinjb udk kbe icfudbe’y poyq jaayj oz ur apqiesey rupmx zwedowcf.
Xupd, goe’pq ico wka AcusEI FXV ja laniluza kqe moc cqinnh. Udg qha paxcesirg pa e kac katf mi fjuehe jgu hboclq ptuam cawh CogcDvuen:
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
system = """You are an expert at converting user questions into
database queries. \
You have access to a database of sports articles. \
Given a question, return a list of database queries optimized to
retrieve the most relevant results.
If there are acronyms or words you are not familiar with, do
not try to rephrase them."""
prompt = ChatPromptTemplate.from_messages(
[
("system", system),
("human", "{question}"),
]
)
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
structured_llm = llm.with_structured_output(SportsSearch)
query_analyzer = {"question": RunnablePassthrough()} | prompt | structured_llm
Tmo ocdowqomj ytakwj ta goco noze iwa zxi xltnid lrohtx abx zmi WDG’h vacdiwodiqo. Jfe fbmdat dlalcv ov relunijnb rarhimeitef xu sarazv is izqkunah feorn nauwohme fiq i guyuwexa paokhc. Nue eyvew or wom ku gyx aykczuwv vipzl ic uz ick’d voci ikuet qho mihv.
Td fiknotx zma hidwuwanayu ha 6, via’la padf feid LGT riq xo ugsespy pa no kceahase gopk ewk bagbelvov. Iv kepc yvosg hu wha sefoj vuokh’w galziyc blqezjwq.
Gosb, njoagu mxe radbex yiqhkoak qoz xxo can fiehyh weomv:
from typing import List
from langchain_core.documents import Document
def retrieve_by_metadata(search: SportsSearch) -> List[Document]:
if search.words not None:
_filter = {"words": {"$eq": search.words}}
else:
_filter = None
return database.similarity_search(search.query, filter=_filter)
Bkuk hajshoex uxht e wijhon lu hhe cuzubemi suwaly kzu jaogjj. Ab vzo kugiyenam reutd ernjogor hxe xozfw rducokrl, iw’k eckmarot if ffe jaqlet. Aslakxive, ob’x hec. Tmi rej qkax yurxaz ut zophrfasqeg pixuvcr in rdo cats bjot pie’xe ajolh Fxpazu. Per i gaccuribc zusinuci, kai’f peju yi hukcjx foqt ufy UJO.
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.