Fase de Recuperação

Ao receber uma pergunta, o aplicativo primeiro pesquisa no índice do Elasticsearch por documentos relevantes. Isso é conseguido gerando um vetor de incorporação esparso para a pergunta e, em seguida, pesquisando no índice as incorporações mais próximas a ela, cada uma associada a uma passagem de um documento.

Assim como na fase de ingestão, o índice do Elasticsearch é gerenciado por meio da integração ElasticsearchStore com o Langchain:

store = ElasticsearchStore(
    es_connection=elasticsearch_client,
    index_name=INDEX,
    strategy=ElasticsearchStore.SparseVectorRetrievalStrategy(model_id=ELSER_MODEL),
)

A geração de um embedding para a pergunta e a subsequente busca por ela são abstrações bem feitas pelo método invoke() da interface de recuperação do Langchain, que executa todas essas tarefas e retorna a lista dos documentos mais relevantes encontrados:

docs = store.as_retriever().invoke(question)
for doc in docs:
    doc_source = {**doc.metadata, 'page_content': doc.page_content}
    yield f'data: {SOURCE_TAG} {json.dumps(doc_source)}\n\n'

Você pode ver aqui como as passagens retornadas são enviadas ao cliente como fontes. O aplicativo React exibirá esses resultados como "Resultados da pesquisa" abaixo da resposta.

É importante observar que o argumento strategy usado na classe ElasticsearchStore deve corresponder à estratégia usada durante a ingestão. Neste exemplo, o SparseVectorRetrievalStrategy cria e pesquisa vetores esparsos do modelo ELSER da Elastic. Outra opção interessante que você pode avaliar é usar o ApproxRetrievalStrategy, que usa incorporações vetoriais densas.

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)