Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

每次都重新new一个新的kbservice对象吗 #5159

Open
LeFuGang opened this issue Dec 26, 2024 · 2 comments
Open

每次都重新new一个新的kbservice对象吗 #5159

LeFuGang opened this issue Dec 26, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@LeFuGang
Copy link

问题描述 / Problem Description
对于知识库的操作每次都要执行 kb = KBServiceFactory.get_service_by_name(knowledge_base_name),当知识库存在的时候,
image
KBServiceFactory.get_service(kb_name, vs_type, embed_model)方法都会根据数据库的类型进行实例化对于数据库的服务对象,我觉得很奇怪,需要每次都取实例化已经存在的知识化服务对象吗?请帮忙解答下,还是有什么我没看懂的机制,谢谢了
image

复现问题的步骤 / Steps to Reproduce

  1. 执行 '...' / Run '...'
  2. 点击 '...' / Click '...'
  3. 滚动到 '...' / Scroll to '...'
  4. 问题出现 / Problem occurs

预期的结果 / Expected Result
描述应该出现的结果 / Describe the expected result.

实际结果 / Actual Result
描述实际发生的结果 / Describe the actual result.

环境信息 / Environment Information

  • Langchain-Chatchat 版本 / commit 号:(例如:0.3.1 或 commit 123456) / Langchain-Chatchat version / commit number: (e.g., 0.3.1 or commit 123456)
  • 部署方式(pypi 安装 / 源码部署 / docker 部署):pypi 安装 / Deployment method (pypi installation / dev deployment / docker deployment): pypi installation
  • 使用的模型推理框架(Xinference / Ollama / OpenAI API 等):Xinference / Model serve method(Xinference / Ollama / OpenAI API, etc.): Xinference
  • 使用的 LLM 模型(GLM-4-9B / Qwen2-7B-Instruct 等):GLM-4-9B / LLM used (GLM-4-9B / Qwen2-7B-Instruct, etc.): GLM-4-9B
  • 使用的 Embedding 模型(bge-large-zh-v1.5 / m3e-base 等):bge-large-zh-v1.5 / Embedding model used (bge-large-zh-v1.5 / m3e-base, etc.): bge-large-zh-v1.5
  • 使用的向量库类型 (faiss / milvus / pg_vector 等): faiss / Vector library used (faiss, milvus, pg_vector, etc.): faiss
  • 操作系统及版本 / Operating system and version: MacOS
  • Python 版本 / Python version: 3.8
  • 推理使用的硬件(GPU / CPU / MPS / NPU 等) / Inference hardware (GPU / CPU / MPS / NPU, etc.): GPU
  • 其他相关环境信息 / Other relevant environment information:

附加信息 / Additional Information
添加与问题相关的任何其他信息 / Add any other information related to the issue.

@LeFuGang LeFuGang added the bug Something isn't working label Dec 26, 2024
Copy link

dosubot bot commented Dec 26, 2024

@LeFuGang 你好!我是Dosu,一个可以帮助你解决 bug、回答问题,并成为贡献者的机器人。我会在这里帮助你,等待人类维护者的到来。

在 Langchain-Chatchat 中,每次调用 KBServiceFactory.get_service 方法时,都会根据指定的 vector_store_type 实例化一个新的知识库服务对象。这种设计可能会导致重复实例化已经存在的服务对象,从而影响性能和资源使用。

目前,代码中没有实现缓存机制或单例模式来重用现有的服务实例。这意味着每次调用都会创建一个新的服务对象,这可能会导致内存使用增加、初始化开销增大以及资源争用等问题[1].

如果你希望避免这种情况,可以考虑在应用中实现一个缓存机制,来存储和重用已经创建的服务实例。这样可以减少不必要的实例化操作,提高应用的性能。

To continue talking to Dosu, mention @dosu.


Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Other

@LeFuGang
Copy link
Author

望避免这种情况,可以考虑在应用中实现一个缓存机制,来存储和重用已经创建的服务实例。这样可以减少不必要的实例化操作,提高应用

好的,明白了,谢谢解答

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant