У меня есть < /p>
Assistant2 assistant=AiServices.builder(Assistant2.class)
.streamingChatModel(chatModel)
.chatMemoryProvider(memoryId -> TokenWindowChatMemory.withMaxTokens(90000, new OpenAiTokenCountEstimator(OpenAiChatModelName.GPT_4_O_MINI)))
.contentRetriever(getContentRetriever()).build()
assistant.chat(10,"What is the name of my cat?");
assistant.chat(10,"What is the color of my cat?");
// Now the content from rag which describes my cat have been duplicated
// in memory, and are send to chat gpt twice.
< /code>
И это работает, но у меня есть одна большая проблема. Если я задаю вопрос, система использует мой ContentretRier для получения соответствующей документации и добавлю их в память (и, следовательно, окно контекста). < /P>
Но если я задаю связанный вопрос, то мой ContentRiever может найти тот же документ, что и для предыдущего вопроса. И затем документ снова добавляется в окно памяти и контекста. Я думал, что Langchain4j обнаружит, что документ, возвращенный ContentretRier, уже был в контексте, поэтому его не следует добавлять снова.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... and-memory