1.解决思路# 核心检索 生成伪代码 from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Milvus from langchain.chat_models import ChatOpenAI embeddings OpenAIEmbeddings(modeltext-embedding-ada-002) vector_store Milvus(embedding_functionembeddings, collection_nameknowledge_base) def answer_question(query: str) - str: # 向量检索 Top-5 docs vector_store.similarity_search(query, k5) context \n.join([doc.page_content for doc in docs]) # 构造 Prompt 生成回答 llm ChatOpenAI(modelgpt-4, temperature0.3) prompt f根据以下参考资料回答用户问题\n{context}\n\n用户问题{query} return llm.predict(prompt)2.为什么传统方案解决不了长尾问题3.知识切片的技巧4.混合检索能提升召回率# 混合检索示例 from langchain.retrievers import BM25Retriever, EnsembleRetriever bm25_retriever BM25Retriever.from_documents(documents) vector_retriever vector_store.as_retriever(search_kwargs{k: 10}) # 两路召回权重各 0.5 ensemble_retriever EnsembleRetriever( retrievers[bm25_retriever, vector_retriever], weights[0.5, 0.5] )5.如果确实检索不到如何设计兜底策略6.搭建知识库前期没足够多的语料咋办7.追问
阅读完成 · 觉得有帮助?