内江网站建设0832hdsj,做网站的钱付款用途写什么,一建工程类专业对照表,百度seo是啥意思RAGFlow 学习笔记 0. 引言1. RAGFlow 支持的文档格式2. 嵌入模型选择后不再允许改变3. 干预文件解析4. RAGFlow 与其他 RAG 产品有何不同#xff1f; 5. RAGFlow 支持哪些语言#xff1f; 6. 哪些嵌入模型可以本地部署#xff1f; 7. 为什么RAGFlow解析文档的时间比… RAGFlow 学习笔记 0. 引言1. RAGFlow 支持的文档格式2. 嵌入模型选择后不再允许改变3. 干预文件解析4. RAGFlow 与其他 RAG 产品有何不同 5. RAGFlow 支持哪些语言 6. 哪些嵌入模型可以本地部署 7. 为什么RAGFlow解析文档的时间比LangChain要长 8. 为什么RAGFlow比其他项目需要更多的资源 9. RAGFlow 支持哪些架构或设备 10. 可以通过URL分享对话吗 11. 为什么我的 pdf 解析在接近完成时停止而日志没有显示任何错误 12. 为什么我无法将 10MB 以上的文件上传到本地部署的 RAGFlow 13. 如何增加RAGFlow响应的长度 14. Empty response(空响应)是什么意思怎么设置呢 15. 如何配置 RAGFlow 以 100% 匹配的结果进行响应而不是利用 LLM 16. 使用 DataGrip 连接 ElasticSearch99. 功能扩展99-1. 扩展支持本地 LLM 功能99-2. 扩展支持 OCI Cohere Embedding 功能99-3. 扩展支持 OCI Cohere Command-r 功能99-4. 扩展支持 Cohere Rerank 功能 0. 引言
这篇文章记录一下学习 RAGFlow 是一些笔记方便以后自己查看和回忆。
1. RAGFlow 支持的文档格式
RAGFlow 支持的文件格式包括文档PDF、DOC、DOCX、TXT、MD、表格CSV、XLSX、XLS、图片JPEG、JPG、PNG、TIF、GIF和幻灯片PPT、PPTX。
2. 嵌入模型选择后不再允许改变
一旦您选择了嵌入模型并使用它来解析文件您就不再允许更改它。明显的原因是我们必须确保特定知识库中的所有文件都使用相同的嵌入模型进行解析确保它们在相同的嵌入空间中进行比较。
3. 干预文件解析
RAGFlow 具有可见性和可解释性允许您查看分块结果并在必要时进行干预。
4. RAGFlow 与其他 RAG 产品有何不同
尽管 LLMs 显着推进了自然语言处理 (NLP)但“垃圾进垃圾出”的现状仍然没有改变。为此RAGFlow 引入了与其他检索增强生成 (RAG) 产品相比的两个独特功能。
细粒度文档解析文档解析涉及图片和表格您可以根据需要灵活干预。可追踪的答案减少幻觉您可以信任 RAGFlow 的答案因为您可以查看支持它们的引文和参考文献。
5. RAGFlow 支持哪些语言
目前有英文、简体中文、繁体中文。
6. 哪些嵌入模型可以本地部署
BAAI/bge-large-zh-v1.5BAAI/bge-base-en-v1.5BAAI/bge-large-en-v1.5BAAI/bge-small-en-v1.5BAAI/bge-small-zh-v1.5jinaai/jina-embeddings-v2-base-enjinaai/jina-embeddings-v2-small-ennomic-ai/nomic-embed-text-v1.5sentence-transformers/all-MiniLM-L6-v2maidalun1020/bce-embedding-base_v1
7. 为什么RAGFlow解析文档的时间比LangChain要长
RAGFlow 使用了视觉模型在布局分析、表格结构识别和 OCR光学字符识别等文档预处理任务中投入了大量精力。这会增加所需的额外时间。
8. 为什么RAGFlow比其他项目需要更多的资源
RAGFlow 有许多用于文档结构解析的内置模型这些模型占用了额外的计算资源。
9. RAGFlow 支持哪些架构或设备
目前我们仅支持 x86 CPU 和 Nvidia GPU。
10. 可以通过URL分享对话吗
是的此功能现已可用。
11. 为什么我的 pdf 解析在接近完成时停止而日志没有显示任何错误
如果您的 RAGFlow 部署在本地则解析进程可能会因 RAM 不足而被终止。尝试通过增加 docker/.env 中的 MEM_LIMIT 值来增加内存分配。
12. 为什么我无法将 10MB 以上的文件上传到本地部署的 RAGFlow
您可能忘记更新 MAX_CONTENT_LENGTH 环境变量
将环境变量 MAX_CONTENT_LENGTH 添加到 ragflow/docker/.env
MAX_CONTENT_LENGTH100000000更新 docker-compose.yml
environment:- MAX_CONTENT_LENGTH${MAX_CONTENT_LENGTH}重新启动 RAGFlow 服务器
docker compose up ragflow -d现在您应该能够上传大小小于 100MB 的文件。
13. 如何增加RAGFlow响应的长度
右键单击所需的对话框以显示“Chat Configuration(聊天配置)”窗口。
切换到Model Setting(模型设置)选项卡并调整Max Tokens(最大令牌)滑块以获得所需的长度。
单击“确定”确认您的更改。
14. Empty response(空响应)是什么意思怎么设置呢
如果从您的知识库中未检索到任何内容则您可以将系统的响应限制为您在“Empty response(空响应)”中指定的内容。如果您没有在空响应中指定任何内容您就可以让您的 LLM 即兴创作给它一个产生幻觉的机会。
15. 如何配置 RAGFlow 以 100% 匹配的结果进行响应而不是利用 LLM
单击页面中间顶部的知识库。 右键单击所需的知识库以显示配置对话框。 选择“QA(问答)”作为块方法然后单击“保存”以确认您的更改。
16. 使用 DataGrip 连接 ElasticSearch
curl -X POST -u elastic:infini_rag_flow -k http://localhost:1200/_license/start_trial?acknowledgetruepretty99. 功能扩展
99-1. 扩展支持本地 LLM 功能
vi rag/utils/__init__.py---
# encoder tiktoken.encoding_for_model(gpt-3.5-turbo)
encoder tiktoken.encoding_for_model(gpt-4-128k)
---vi api/settings.py---Local-OpenAI: {chat_model: gpt-4-128k,embedding_model: ,image2text_model: ,asr_model: ,},
---vi api/db/init_data.py---
factory_infos [{name: OpenAI,logo: ,tags: LLM,TEXT EMBEDDING,SPEECH2TEXT,MODERATION,status: 1,
}, {name: Local-OpenAI,logo: ,tags: LLM,status: 1,
},
---# ---------------------- Local-OpenAI ------------------------{fid: factory_infos[0][name],llm_name: gpt-4-128k,tags: LLM,CHAT,128K,max_tokens: 128000,model_type: LLMType.CHAT.value},vi rag/llm/__init__.py---
ChatModel {OpenAI: GptTurbo,Local-OpenAI: GptTurbo,
---vi web/src/pages/user-setting/setting-model/index.tsx---
const IconMap {Tongyi-Qianwen: tongyi,Moonshot: moonshot,OpenAI: openai,Local-OpenAI: openai, ZHIPU-AI: zhipu,文心一言: wenxin,Ollama: ollama,Xinference: xinference,DeepSeek: deepseek,VolcEngine: volc_engine,BaiChuan: baichuan,Jina: jina,
};
---vi web/src/pages/user-setting/setting-model/api-key-modal/index.tsx---{llmFactory Local-OpenAI (Form.ItemFieldTypelabel{t(baseUrl)}namebase_urltooltip{t(baseUrlTip)}Input placeholderhttps://api.openai.com/v1 //Form.Item)}
---连接 MySQL 数据库1. 向llm_factories表插入数据
Local-OpenAI,1717812204952,2024-06-08 10:03:24,1717812204952,2024-06-08 10:03:24,,LLM,12. 向llm表插入数据
gpt-4-128k,1717812204975,2024-06-08 10:03:24,1717812204975,2024-06-08 10:03:24,chat,Local-OpenAI,128000,LLM,CHAT,128K,199-2. 扩展支持 OCI Cohere Embedding 功能
连接 MySQL 数据库1. 向llm_factories表插入数据
OCI-Cohere,1717812204967,2024-06-08 10:03:24,1717812204967,2024-06-08 10:03:24,,TEXT EMBEDDING,12. 向llm表插入数据
cohere.embed-multilingual-v3.0,1717812204979,2024-06-08 10:03:24,1717812204979,2024-06-08 10:03:24,embedding,OCI-Cohere,512,TEXT EMBEDDING,,1vi api/apps/llm_app.py---fac LLMFactoriesService.get_all()return get_json_result(data[f.to_dict() for f in fac if f.name not in [Youdao, FastEmbed, BAAI]])# return get_json_result(data[f.to_dict() for f in fac if f.name not in [Youdao, FastEmbed, BAAI, OCI-Cohere]])
------for m in llms:m[available] m[fid] in facts or m[llm_name].lower() flag-embedding or m[fid] in [Youdao,FastEmbed, BAAI]# m[available] m[fid] in facts or m[llm_name].lower() flag-embedding or m[fid] in [Youdao,FastEmbed, BAAI, OCI-Cohere]
---vi api/settings.py---OCI-Cohere: {chat_model: ,embedding_model: cohere.embed-multilingual-v3.0,image2text_model: ,asr_model: ,},
---vi api/db/init_data.py---
factory_infos [{name: OpenAI,logo: ,tags: LLM,TEXT EMBEDDING,SPEECH2TEXT,MODERATION,status: 1,
}, {name: OCI-Cohere,logo: ,tags: TEXT EMBEDDING,status: 1,
},
---# ---------------------- OCI-Cohere ------------------------{fid: factory_infos[0][name],llm_name: cohere.embed-multilingual-v3.0,tags: TEXT EMBEDDING,512,max_tokens: 512,model_type: LLMType.EMBEDDING.value},vi rag/llm/__init__.py---
EmbeddingModel {OCI-Cohere: OCICohereEmbed,
---vi rag/llm/embedding_model.py---
class OCICohereEmbed(Base):def __init__(self, key, model_namecohere.embed-multilingual-v3.0,base_urlhttps://inference.generativeai.us-chicago-1.oci.oraclecloud.com):if not base_url:base_url https://inference.generativeai.us-chicago-1.oci.oraclecloud.comCONFIG_PROFILE DEFAULTconfig oci.config.from_file(~/.oci/config, CONFIG_PROFILE)self.client oci.generative_ai_inference.GenerativeAiInferenceClient(configconfig, service_endpointbase_url,retry_strategyoci.retry.NoneRetryStrategy(),timeout(10, 240))self.model_name model_nameself.compartment keydef encode(self, texts: list, batch_size1):token_count 0texts [truncate(t, 512) for t in texts]for t in texts:token_count num_tokens_from_string(t)embed_text_detail oci.generative_ai_inference.models.EmbedTextDetails()embed_text_detail.serving_mode oci.generative_ai_inference.models.OnDemandServingMode(model_idself.model_name)embed_text_detail.inputs textsembed_text_detail.truncate NONEembed_text_detail.compartment_id self.compartmentres self.client.embed_text(embed_text_detail)print(f{res.data})return res.data.embeddings, token_countdef encode_queries(self, text):text truncate(text, 512)token_count num_tokens_from_string(text)res self.encode(texts[text])return res[0], token_count在服务器上设置好 ~/.oci/config。 添加的模型时OCI-Cohere输入使用的OCI CompartmentID。
制作图标访问 https://brandfetch.com/oracle.com 下载 oracle svg 图标保存到 web/src/assets/svg/llm 目录下面。
vi web/src/pages/user-setting/setting-model/index.tsx---
const IconMap {OCI-Cohere: oracle,
---99-3. 扩展支持 OCI Cohere Command-r 功能
连接 MySQL 数据库1. 向llm_factories表插入数据
OCI-Cohere,1717812204967,2024-06-08 10:03:24,1717812204967,2024-06-08 10:03:24,,LLM,TEXT EMBEDDING,12. 向llm表插入数据
cohere.embed-multilingual-v3.0,1717812204979,2024-06-08 10:03:24,1717812204979,2024-06-08 10:03:24,embedding,OCI-Cohere,512,TEXT EMBEDDING,,1vi api/apps/llm_app.py---fac LLMFactoriesService.get_all()return get_json_result(data[f.to_dict() for f in fac if f.name not in [Youdao, FastEmbed, BAAI]])# return get_json_result(data[f.to_dict() for f in fac if f.name not in [Youdao, FastEmbed, BAAI, OCI-Cohere]])
------for m in llms:m[available] m[fid] in facts or m[llm_name].lower() flag-embedding or m[fid] in [Youdao,FastEmbed, BAAI]# m[available] m[fid] in facts or m[llm_name].lower() flag-embedding or m[fid] in [Youdao,FastEmbed, BAAI, OCI-Cohere]
---vi api/settings.py---OCI-Cohere: {chat_model: cohere.command-r-16k,embedding_model: cohere.embed-multilingual-v3.0,image2text_model: ,asr_model: ,},
---vi api/db/init_data.py---
factory_infos [{name: OpenAI,logo: ,tags: LLM,TEXT EMBEDDING,SPEECH2TEXT,MODERATION,status: 1,
}, {name: OCI-Cohere,logo: ,tags: LLM,TEXT EMBEDDING,status: 1,
},
---# ---------------------- OCI-Cohere ------------------------{fid: factory_infos[0][name],llm_name: cohere.embed-multilingual-v3.0,tags: TEXT EMBEDDING,512,max_tokens: 512,model_type: LLMType.EMBEDDING.value},{fid: factory_infos[0][name],llm_name: cohere.command-r-16k,tags: LLM,CHAT,16K,max_tokens: 16385,model_type: LLMType.CHAT.value},vi rag/llm/__init__.py---
ChatModel {OCI-Cohere: OCICohereChat,
---vi rag/llm/chat_model.py---
class OCICohereChat(Base):def __init__(self, key, model_namecohere.command-r-16k,base_urlhttps://inference.generativeai.us-chicago-1.oci.oraclecloud.com):if not base_url:base_url https://inference.generativeai.us-chicago-1.oci.oraclecloud.comCONFIG_PROFILE DEFAULTconfig oci.config.from_file(~/.oci/config, CONFIG_PROFILE)self.client oci.generative_ai_inference.GenerativeAiInferenceClient(configconfig, service_endpointbase_url,retry_strategyoci.retry.NoneRetryStrategy(),timeout(10, 240))self.model_name model_nameself.compartment keystaticmethoddef _format_params(params):return {max_tokens: params.get(max_tokens, 3999),temperature: params.get(temperature, 0),frequency_penalty: params.get(frequency_penalty, 0),top_p: params.get(top_p, 0.75),top_k: params.get(top_k, 0),}def chat(self, system, history, gen_conf):chat_detail oci.generative_ai_inference.models.ChatDetails()chat_request oci.generative_ai_inference.models.CohereChatRequest()params self._format_params(gen_conf)chat_request.max_tokens params.get(max_tokens)chat_request.temperature params.get(temperature)chat_request.frequency_penalty params.get(frequency_penalty)chat_request.top_p params.get(top_p)chat_request.top_k params.get(top_k)chat_detail.serving_mode oci.generative_ai_inference.models.OnDemandServingMode(model_idself.model_name)chat_detail.chat_request chat_requestchat_detail.compartment_id self.compartmentchat_request.is_stream Falseif system:chat_request.preamble_override systemprint(f{history[-1]})chat_request.message history[-1][content]chat_response self.client.chat(chat_detail)# Print resultprint(**************************Chat Result**************************)print(vars(chat_response))chat_response vars(chat_response)chat_response_data chat_response[data]chat_response_data_chat_response chat_response_data.chat_responseans chat_response_data_chat_response.texttoken_count 0for t in history[-1][content]:token_count num_tokens_from_string(t)for t in ans:token_count num_tokens_from_string(t)return ans, token_countdef chat_streamly(self, system, history, gen_conf):chat_detail oci.generative_ai_inference.models.ChatDetails()chat_request oci.generative_ai_inference.models.CohereChatRequest()params self._format_params(gen_conf)chat_request.max_tokens params.get(max_tokens)chat_request.temperature params.get(temperature)chat_request.frequency_penalty params.get(frequency_penalty)chat_request.top_p params.get(top_p)chat_request.top_k params.get(top_k)chat_detail.serving_mode oci.generative_ai_inference.models.OnDemandServingMode(model_idself.model_name)chat_detail.chat_request chat_requestchat_detail.compartment_id self.compartmentchat_request.is_stream Trueif system:chat_request.preamble_override systemprint(f{history[-1]})token_count 0for t in history[-1][content]:token_count num_tokens_from_string(t)chat_request.message history[-1][content]chat_response self.client.chat(chat_detail)# Print resultprint(**************************Chat Result**************************)chat_response vars(chat_response)chat_response_data chat_response[data]# for msg in chat_response_data.iter_content(chunk_sizeNone):for event in chat_response_data.events():token_count 1yield json.loads(event.data)[text]yield token_count在服务器上设置好 ~/.oci/config。 添加的模型时OCI-Cohere输入使用的OCI CompartmentID。
99-4. 扩展支持 Cohere Rerank 功能
连接 MySQL 数据库1. 向llm_factories表插入数据
Cohere,1717812204971,2024-06-08 10:03:24,1717812204971,2024-06-08 10:03:24,,TEXT RE-RANK,12. 向llm表插入数据
rerank-multilingual-v3.0,1717812205057,2024-06-08 10:03:25,1717812205057,2024-06-08 10:03:25,rerank,Cohere,4096,RE-RANK,4k,1vi api/settings.py---Cohere: {chat_model: ,embedding_model: ,image2text_model: ,asr_model: ,rerank_model: rerank-multilingual-v3.0,},
---vi api/db/init_data.py---
factory_infos [{name: OpenAI,logo: ,tags: LLM,TEXT EMBEDDING,SPEECH2TEXT,MODERATION,status: 1,
}, {name: Cohere,logo: ,tags: TEXT RE-RANK,status: 1,
}
---# ---------------------- Cohere ------------------------{fid: factory_infos[12][name],llm_name: rerank-multilingual-v3.0,tags: RE-RANK,4k,max_tokens: 4096,model_type: LLMType.RERANK.value},vi rag/llm/__init__.py---
RerankModel {Cohere: CohereRerank,
---vi rag/llm/rerank_model.py---def similarity(self, query: str, texts: list):token_count 1texts [truncate(t, 4096) for t in texts]for t in texts:token_count num_tokens_from_string(t)for t in query:token_count num_tokens_from_string(t)response self.co.rerank(modelself.model,queryquery,documentstexts,top_nlen(texts),return_documentsFalse,)return np.array([r.relevance_score for r in response.results]), token_count添加的模型时Cohere输入使用的Cohere 的 API Key。
制作图标访问 https://brandfetch.com/cohere.com 下载 cohere svg 图标保存到 web/src/assets/svg/llm 目录下面。
vi web/src/pages/user-setting/setting-model/index.tsx---
const IconMap {Cohere: cohere,
---未完待续