wind2005 2024-12-19 10:49 采纳率: 20%
浏览 1766
已结题

Ollama+AnythingLLM搭建私有知识库如何提高回答准确率

搭建了Ollama+AnythingLLM+Qwen2.5:7b的大模型环境,想上传一些行业标准和企业标准,以创建一个自有的本地知识库。但最终的问答结果不太好。
比如:我们有多种不同类型的产品,每类产品都有对应的规范标准,各类产品标准的文档结构雷同,都有产品编号的组成这一内容,我想了解某一类产品产品编号,AnythingLLM给出不了准确的结果,每次给出的结果都很笼统,并没有匹配我上传的任何一个文档内容。
为提高回答的准确度,我尝试(1)使用不同的文档格式:doc\txt\markdown\csv,其中csv中将产品编号组成作为独立的一行数据处理,依然效果不好;(2)设置工作区的参数。聊天模式设置为查询、向量数据库相似性阈值设计为>=0.5等,效果也不好。

还望有经验的朋友给个建议,非常感谢!

  • 写回答

32条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2024-12-19 10:50
    关注
    获得0.15元问题酬金
    让【道友老李】来帮你解答,本回答参考通义千问编写,并整理提供,如果还有疑问可以点击头像关注私信或评论!
    如果答案让您满意,请采纳、关注,非常感谢!
    在您描述的情况下,您已经尝试了多种方法来提高问答系统的准确性,但效果仍不理想。这里有几个可能的原因以及对应的解决方案,希望能帮助到您。

    1. 文档处理与索引

    • 问题:虽然您尝试了不同格式的文档(如doc, txt, markdown, csv),但如果这些文档中的信息没有被正确解析和索引,那么模型可能无法有效地从中提取出相关信息。
    • 解决方案
      • 确保您的系统能够很好地解析并理解每种文档类型。例如,对于CSV文件,确认是否按照预期的方式解析每一行数据。
      • 使用更强大的文本处理工具或库来预处理您的文档,比如使用pandas处理表格数据,或者使用nltkspaCy等自然语言处理库来增强文本的理解。
      • 在上传文档后,检查生成的向量数据库,确保它们准确反映了原始文档的内容。

    2. 向量数据库配置

    • 问题:如果向量数据库的相似性阈值设置得过高或过低,都可能导致搜索结果不够准确。
    • 解决方案
      • 调整向量数据库的相似度阈值,试验不同的值以找到最佳匹配点。通常情况下,开始时可以设置一个较低的阈值(如0.3)进行测试,然后根据实际情况逐步调整。
      • 尝试使用其他类型的向量检索算法,如FAISS、Annoy等,看看是否能获得更好的性能。

    3. 模型微调

    • 问题:通用的大规模语言模型可能对特定领域内的术语和概念不够熟悉。
    • 解决方案
      • 如果条件允许,考虑对Qwen2.5:7b进行领域特定的数据集上的微调。这可以通过准备相关领域的语料库,并利用Hugging Face Transformers库来进行。
      • 另外一种方法是使用LoRA (Low-Rank Adaptation)技术,在不显著增加模型大小的前提下改进模型对于特定任务的表现。

    4. 查询优化

    • 问题:用户查询的方式也可能影响到最终的答案质量。
    • 解决方案
      • 尝试使用更加具体且明确的问题表述方式。例如,“请提供产品A1234的产品编号组成规则”相较于“告诉我产品编号怎么组成的”可能会得到更精确的回答。
      • 实施某种形式的查询扩展技术,自动地将用户的原始查询转换为包含更多上下文信息的形式。

    示例代码片段

    假设我们正在使用Python和transformers库来实现上述某些功能:

    from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline
    
    # 加载预训练模型
    model_name = "Qwen2.5-7b"
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForQuestionAnswering.from_pretrained(model_name)
    
    qa_pipeline = pipeline("question-answering", model=model, tokenizer=tokenizer)
    
    # 示例查询
    context = "产品编号由三个部分组成:系列号、型号和序列号。"
    question = "请解释产品编号的组成部分。"
    
    result = qa_pipeline(question=question, context=context)
    print(f"答案: {result['answer']}")
    

    希望以上建议能帮助您改善当前遇到的问题!如果有更多细节需要讨论,请随时告知。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 创建了问题 12月19日