IT�C���t���̍\�z�E�^�p�t�F�[�Y�Ő���AI���ǂ��𗧂̂����������{�A�ځB����́A���R����Ń��O�������ł���RAG�A�v���P�[�V�����̎����菇���Љ�܂��BFluent Bit�ɂ�郍�O���W����Streamlit�ɂ��`���b�g��ʂ̎����܂ŁA��A�̊J���v���Z�X���\�[�X�R�[�h�ƂƂ��ɉ�����܂��B
���̋L���͉������ł��B����o�^�i�����j����ƑS�Ă������������܂��B
�@IT�C���t���̍\�z�E�^�p�t�F�[�Y�Ő���AI���ǂ��𗧂̂�����������{�A���B�O���́u�c��ȃ��O���������R����Łv���e�[�}�ɁA����AI��RAG�iRetrieval-Augmented Generation�j�����p���A�]���͑���Ȏ��ԂƘJ�͂�v���Ă������O������啝�Ɍ��������邽�߂̃A�[�L�e�N�`�����Љ�܂����B
�@����́A���̃A�[�L�e�N�`�����x�[�X�ɁA�ǂ̂悤�ɃA�v���P�[�V�����֗��Ƃ�����ł����̂��ɏœ_�Ă܂��B�v�̃|�C���g������菇��������Ȃ���A����AI���^�p����Łu�g����`�v�ɂ��邽�߂̎��H�I�ȊJ���v���Z�X���Љ�܂��B
�@�{�e�ŏЉ��A�v���P�[�V�����̃\�[�X�R�[�h��GitHub���|�W�g���Ō��J���Ă��܂��B
�@��3��̋L���ł��Љ���A�[�L�e�N�`�����ȒP�ɂ����炢���܂��B������x�[�X�ɁA�ȉ��̐}�Ɏ����e�R���|�[�l���g�����Ɏ������Ă����܂��B
�@�܂��A�e�T�[�o�ɁuFluent Bit�v�����A���O�����W���ă��O���WAPI�ɑ��M���܂��i1�j�B���O���WAPI�ł́A���O�̖{���Ɠ��������A�{���̓x�N�g�������āuChromaDB�v�ɕۑ��A�����̓��^�f�[�^�Ƃ��ĊǗ����܂��i2�j�B
�@�C���t���^�p�S���҂́AStreamlit�ō쐬�����`���b�g��ʂ��玩�R����Ŏ������͂��܂��i3�j�B������e���x�N�g�������ăf�[�^�x�[�X���������A�֘A���郍�O���擾���܂��i4�j�B
�@�Ō�ɁA�擾�������O�����LLM�i��K�͌��ꃂ�f���j�������i5�j�A���̌��ʂ��`���b�g��ʂɕԂ��܂��i6�j�B
�@����ɂ��A�^�p�S���҂͑�ʂ̃��O�ڒ��ׂ邱�ƂȂ��A�K�v�ȏ���f�����c���ł��܂��B
�@����Љ��A�v���P�[�V�����̃f�B���N�g���\���͈ȉ��̒ʂ�ł��BFluent Bit�̐ݒ�t�@�C����O���W�p�̃X�N���v�g�A�`���b�gUI�p�̃X�N���v�g�Ȃǂ��܂܂�Ă��܂��B
������ fluent-bit �� ������ apps.log # �T���v�����O�t�@�C�� �� ������ docker-compose.yml # Fluent Bit�p��Docker Compose�t�@�C�� �� ������ fluent-bit.conf # Fluent Bit�̃��C���ݒ�t�@�C�� �� ������ parsers.conf # Fluent Bit�̉�͐ݒ�t�@�C�� ������ ingest.py # ���O���WAPI�̎��� ������ requirements.txt # �K�v��Python�p�b�P�[�W�ꗗ ������ ui.py # �`���b�gUI�̎���
�@�e�T�[�o���烍�O�����W���邽�߂�Fluent Bit�����܂��BFluent Bit�͌y�ʂȃ��O���W�G�[�W�F���g�ł���A���l�ȓ��̓\�[�X���烍�O�����W���A���܂��܂ȏo�͐�ɓ]���ł��܂��B�����ł́AFluent Bit�͌�����Docker�C���[�W����N�����邱�ƂƂ��āAfluent-bit/docker-compose.yml�t�@�C���̎�v�Ȑݒ���e���Љ�܂��B
services:
fluent-bit:
image: fluent/fluent-bit:4.2
container_name: fluent-bit
- ./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf:ro
- ./parsers.conf:/fluent-bit/etc/parsers.conf:ro
�@1�s�ڍ�����./fluent-bit.conf�̓z�X�g�iCompose�t�@�C���̂���f�B���N�g���j��̃t�@�C���ł��B1�s�ډE����/fluent-bit/etc/fluent-bit.conf�̓R���e�i����Fluent Bit���Q�Ƃ���W���p�X�ł��B2�s�ڂ����l�ɁAparsers.conf���R���e�i���̕W���p�X�Ƀ}�E���g���Ă��܂��B:ro��read-only�i�ǂݎ���p�j�Ń}�E���g����w��ł��B
�@���̍\���ɂ��邱�ƂŁA�ݒ���z�X�g���ŕҏW���R���e�i�ċN���Ŕ��f���ł��A���s���낪���₷���Ȃ�܂��B�܂�ro�ɂ��邱�ƂŁA�R���e�i������ݒ������ď��������鎖�̂��h���܂��B
- ./apps.log:/var/log/apps.log:ro
�@Fluent Bit�̓��͑���tail�v���O�C�����g����/var/log/apps.log���Ď�����z��̂��߁A�z�X�g��apps.log�����̃p�X�Ƀ}�E���g���Ă��܂��B
extra_hosts: - "host.docker.internal:host-gateway"
�@����̍\���ł�Fluent Bit�̏o�͐悪�u���O���WAPI�iFastAPI�j���z�X�g���ŋN�����Ă���HTTP�T�[�o�v�ɂȂ�܂��B���̏ꍇ�AFluent Bit�R���e�i����z�X�g�փA�N�Z�X�ł���K�v������܂��B
�@host.docker.internal�́u�R���e�i����z�X�g�֓��B���邽�߂̓��ʂȃz�X�g���v�Ƃ��Ă悭�g���܂��B������Linux���ł�host.docker.internal�������ʼn�������Ȃ��ꍇ������A���̑�Ƃ���extra_hosts���g���Ė����I�ɖ��O�����ł���悤�ɂ��Ă��܂��Bhost-gateway��Docker�����z�X�g�Q�[�g�E�F�C�̓���w��ŁADocker Compose���Ńz�X�g�̃Q�[�g�E�F�CIP�����蓖�ĂĂ���܂��B
�@���̐ݒ肪���邱�ƂŁAFluent Bit���̏o�͐ݒ�ʼn��L�̂悤�ɏ������ꍇ�ł��A�R���e�i���Ő�������������A�z�X�g���localhost������HTTP���M�ł���悤�ɂȂ�܂��B
Host host.docker.internal
�@Fluent Bit�̃��C���ݒ�t�@�C����fluent-bit/fluent-bit.conf�ł��B����̍\���ɕK�v�Ȏ�v�ݒ���e���Љ�܂��B
[INPUT]
name tail
path /var/log/apps.log
parser simplelog
Tag app.logs
�@���̃Z�N�V�����ł́AFluent Bit���ǂ̃��O���A�ǂ̌`���œǂݎ�邩���w�肵�Ă��܂��B
[OUTPUT]
Name http
Match app.logs
Host host.docker.internal
Port 8000
URI /ingest
�@����OUTPUT�ł́A���O��HTTP���N�G�X�g�Ƃ��ă��O���WAPI�ɑ��M����ݒ�����Ă��܂��B
�@���ɁAFluent Bit�̉�͗p�p�[�T�ݒ�t�@�C���ł���fluent-bit/parsers.conf�̎�v�ȓ��e���Љ�܂��B���̃t�@�C���̖����́A���O�̃t�H�[�}�b�g�Ɋ�Â��ă��O����͂��A�K�v�ȃt�B�[���h�i�����ł͓����Ɩ{���j�𒊏o���邱�Ƃł��B
[PARSER]
Name simplelog
Format regex
Regex ^\[(?<time>[^\]]+)\]\s(?<log>.*)$
Time_Key time
Time_Format %Y-%m-%d %H:%M:%S %z
[2024-01-13 11:00:00 +0000] Jan 13 11:00:00 server1 kernel: Out of memory: Kill process 1234 (myapp) score 1000 or sacrifice child
�@���̌��ʁA1�s�̃��O�͈ȉ��̂悤�ɕ�������܂��B
�@����ɂ��A���O�Ɋ܂܂��^�C���X�^���v�𐳊m�ɓ��������Ƃ��Ĉ�����悤�ɂȂ�܂��B
�@���O���WAPI��`���b�gUI���������邽�߂ɕK�v��Python�p�b�P�[�W���C���X�g�[�����邽�߂�requirements.txt�t�@�C���̓��e�͈ȉ��̒ʂ�ł��B
fastapi==0.121.3 uvicorn==0.38.0 chromadb==1.3.5 streamlit==1.51.0 google-genai==1.52.0
�@���ꂼ��̃��C�u�����ɂ��Đ������܂��B
�@���O���WAPI�́AFluent Bit���瑗�M���ꂽ���O�����A�x�N�g��������ChromaDB�ɕۑ����������S���܂��B�ȉ��ɁAingest.py�t�@�C���̎�v�Ȏ������e�������܂��B
chroma_db_client = chromadb.PersistentClient() collection = chroma_db_client.get_or_create_collection(name="logs")
�@ChromaDB�̉i���N���C�A���g�iPersistentClient�j���쐬���Alogs�Ƃ����R���N�V������p�ӂ��܂��B�����Ƀ��O�{�����h�L�������g�Ƃ��ĕۑ����܂��B������g�p���邱�ƂŁA�f�[�^�x�[�X�̓��e���f�B�X�N�ɕۑ�����A�A�v���P�[�V�����̍ċN������f�[�^���ێ�����܂��B
app = FastAPI()
�@FastAPI�A�v���P�[�V�����̃C���X�^���X���쐬���܂��B����ɂ��AAPI�G���h�|�C���g���`���ă��N�G�X�g�������ł���悤�ɂȂ�܂��B
@app.post("/ingest")
async def receive_log(request: Request):
data = await request.json()
�@/ingest�G���h�|�C���g���`���APOST���N�G�X�g�����܂��BFluent Bit���瑗�M���ꂽ���O�f�[�^��JSON�`���Ŏ��Arequest.json()���\�b�h���g�p���ăp�[�X���܂��B
�@��郍�O�̌`���͈ȉ��̂悤�ɂȂ��Ă��܂��B
[
{
"date": 1705132800,
"log": "Jan 13 11:00:00 server1 kernel: Out of memory: Kill process 1234 (myapp) score 1000 or sacrifice child"
},
{
"date": 1705132860,
"log": "Jan 13 11:01:00 server1 myapp[1234]: Application started successfully"
}
]
�@date�t�B�[���h�����O�̃^�C���X�^���v�iUNIX timestamp �`���j�Alog�t�B�[���h�����O�{���ł��B
for entry in data:
ts = entry["date"] # ���O�̃^�C���X�^���v�iUNIX timestamp �`���j���擾
log = entry["log"] # ���O�{�����擾
�@Fluent Bit���瑗�M���ꂽ�e���O�G���g���ɂ��āA�^�C���X�^���v�ƃ��O�{���𒊏o���܂��B�^�C���X�^���v��UNIX timestamp�`���Ŏ��܂��B
metadatas = []
metadatas.append({"timestamp": ts})
�@���O�̃^�C���X�^���v��ChromaDB�̃��^�f�[�^�Ƃ��ĕۑ����܂��B����ɂ��A��i�̌��������œ��������ɂ��i�荞�݂��\�ɂȂ�܂��B
unique_id = str(uuid.uuid4())
�@ChromaDB�ɓo�^���邽�߂̈�ӂ�ID��UUID�Ő������܂��B
# ChromaDB�Ƀ��O��lj�
collection.add(
documents=[log],
ids=[unique_id],
metadatas=metadatas,
)
�@���O�{����documents�Ƃ���ChromaDB�ɓo�^���܂��B�{���̓x�N�g��������A�x�N�g�������̑ΏۂƂȂ�܂��B
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000, log_level="debug")
�@���̃X�N���v�g�ڎ��s�����ꍇ�ɁAUvicorn���g����FastAPI�A�v�����N�����܂��Bhost="0.0.0.0"�Ƃ��邱�ƂŁADocker�R���e�i�ȂNJO������̃A�N�Z�X���\�ɂȂ�܂��B
�@�`���b�g�A�v���P�[�V�����́AStreamlit���g���č\�z���A���[�U�[����̎��R����̎�����t���A�֘A���郍�O���������ĉ����܂��B�ȉ��ɁAui.py�t�@�C���̎�v�Ȏ������e�������܂��B
# Azure OpenAI �N���C�A���g�̏����� llm_client = genai.Client()
�@Gemini�𗘗p���邽�߂̃N���C�A���g�ł��B����̗�ł�Google�̐���AI�T�[�r�X�ł���Gemini���g�p���Ă��܂����A����LLM�T�[�r�X�𗘗p����ꍇ�͓K�X�ύX���Ă��������B
chroma_db_client = chromadb.PersistentClient() collection = chroma_db_client.get_or_create_collection(name="logs")
�@ChromaDB�̉i���N���C�A���g���쐬���Alogs�R���N�V�������擾���܂��B���O���WAPI�ŕۑ��������O�f�[�^���������邽�߂Ɏg�p���܂��B
def extract_time_range_from_query(query: str):
system_prompt = """
���Ȃ��͓������o��p�̃A�V�X�^���g�ł���B
���[�U�[�̓��{��̎��╶����A�u�������������Ԕ͈́i�J�n�ƏI���j�v�����𒊏o���A
����JSON�`���ŏo�͂���B
�E�E�E�ȉ����E�E�E
- JSON �ȊO�̕����͈�؏o�͂��Ă͂Ȃ�Ȃ��B
""".strip()
�@���[�U�[�̓��{��N�G�����猟���Ώۂ̓����͈͂𒊏o������ł��B�����ł́A���K�\���ł͂Ȃ�����AI�ɓ������o��p�̖�����^����v�ɂ��Ă��܂��B
�@�����Œ�`���Ă���V�X�e���v�����v�g�ł́A���[�U�[�̎��╶����u�������������Ԕ͈́i�J�n�ƏI���j�v�����𒊏o���AJSON�`���ŏo�͂���悤�w�����Ă��܂��B����ɂ��A���G�Ȏ��R����̎��₩������m�ɓ����͈͂����ł��܂��B�����Ă����Œ��o���������͈͂��AChromaDB�̌������Ƀ��^�f�[�^�t�B���^�[�Ƃ��ė��p���܂��B���̃t�B���^�[�̓K�p�ɂ��A�w�肳�ꂽ���Ԕ͈͓��̃��O�݂̂�ΏۂɌ��������邽�߁A�s�v�ȃ��O����������̂�h���܂��B
resp = llm_client.models.generate_content(
model="gemini-2.5-flash",
config=types.GenerateContentConfig(
system_instruction=system_prompt),
contents=query
)
content = resp.text
�@Gemini�̃e�L�X�g�����@�\���g���āA���[�U�[�̎��╶��������͈͂𒊏o���܂��Bsystem_instruction�ɐ�قǒ�`�����V�X�e���v�����v�g��n���Acontents�Ƀ��[�U�[�̎��╶���w�肵�܂��B�����āA�ϐ�content�ɂ́AGemini���������������͈͂�JSON�����i�[����܂��B
# ���o���� JSON ����������p�[�X���� UNIX timestamp �ɕϊ�
try:
data = json.loads(content)
start_str = data.get("start")
end_str = data.get("end")
start_ts = datetime.fromisoformat(start_str).timestamp() if start_str else None
end_ts = datetime.fromisoformat(end_str).timestamp() if end_str else None
return start_ts, end_ts
except Exception:
# ���t���o�Ɏ��s�������߁A���ԃt�B���^�Ȃ��Ō���
return None, None
�@���o����JSON��������p�[�X���A�J�n�����ƏI��������ISO 8601�`������UNIX timestamp�ɕϊ����܂��B�ϊ��ɐ��������ꍇ�́A�J�n�ƏI���̃^�C���X�^���v���^�v���ŕԂ��܂��B�����p�[�X�Ɏ��s�����ꍇ�́A���ԃt�B���^�[�Ȃ��Ō������邽�߂�(None, None)��Ԃ��܂��B
def search_logs(query: str) -> str:
start_ts, end_ts = extract_time_range_from_query(query)
�@���O����֘A����G���g��������������ł��B�܂��A���[�U�[�̎��╶��������͈͂𒊏o���܂��B��قǒ�`����extract_time_range_from_query�����Ăяo���A�J�n�ƏI���̃^�C���X�^���v���擾���܂��B
where_filter = None
if start_ts is not None and end_ts is not None:
where_filter = {
"$and": [
{"timestamp": {"$gte": start_ts}},
{"timestamp": {"$lte": end_ts}}
]
}
�@���o���������͈͂Ɋ�Â��āAChromaDB�̃��^�f�[�^�t�B���^�[���쐬���܂��B�J�n�ƏI���̗��������݂���ꍇ�A$and������timestamp���w��͈͓��ɂ��郍�O�݂̂�ΏۂƂ���t�B���^�[���\�z���܂��B
results = collection.query(
query_texts=[query],
n_results=5, # ���5���̂�
where=where_filter, # �����t�B���^��K�p�i���Ȃ���� None �̂܂܁j
)
retrieved_logs = "\n".join(results["documents"][0]) if results["documents"] else ""
�@ChromaDB�Ƀx�N�g�����������s���A�֘A���郍�O�G���g�����擾���܂��Bquery_texts�Ƀ��[�U�[�̎��╶���w�肵�An_results�ŏ��5���݂̂��擾���܂��Bwhere�p�����[�^�[�ɐ�قǍ쐬���������t�B���^�[��K�p���܂��B�������ʂ��烍�O�{���𒊏o���A���s�Ō�������1�̕�����Ƃ��ĕԂ��܂��B
prompt = f"""
�ȉ��̓T�[�o�[���O�̈ꕔ�ł���B���̃��O�����ƂɎ���ɓ�����B
���O:
{retrieved_logs}
����:
{query}
�����͊Ȍ��ɂ܂Ƃ߂Ă��������B
"""
�@���[�U�[�̎���ɑ��ĉ����邽�߂̃v�����v�g���쐬���܂��B�擾�������O�G���g���ƃ��[�U�[�̎��╶���܂߁A���O�����ƂɎ���ɓ�����悤�w�����Ă��܂��B
response = llm_client.models.generate_content(
model="gemini-2.5-flash", contents=prompt
)
return response.text
�@Gemini�̃e�L�X�g�����@�\���g���āA�쐬�����v�����v�g�Ɋ�Â��ĉ����܂��B�������ꂽ�e�L�X�g��Ԃ��܂��B
if "history" not in st.session_state:
st.session_state["history"] = []
�@��������́AStreamlit���g���ĉ�ʂ��\�z���邽�߂̃R�[�h�������܂��B�܂��A�`���b�g���������������Ă��܂��Bst.session_state�́AStreamlit�̃Z�b�V������Ԃ��Ǘ����邽�߂̃I�u�W�F�N�g�ŁA�Z�b�V�����ԂŃf�[�^�����L���邽�߂Ɏg�p����܂��B"history"�Ƃ����L�[��st.session_state�ɑ��݂��Ȃ��ꍇ�́A��̃��X�g�����������Ă��܂��B
for message in st.session_state.history:
with st.chat_message(message["role"]):
st.write(message["content"])
�@�`���b�g������\�����邽�߂̃R�[�h�ł��Bst.session_state.history�Ɋi�[����Ă���`���b�g���������o���āAst.chat_message���g���ĕ\�����Ă��܂��Bmessage["role"]�ɂ̓��[�U�[���`���b�gbot�̂ǂ���ł��邩������role���i�[����Amessage["content"]�ɂ̓��b�Z�[�W�̓��e���i�[����Ă��܂��B
if prompt := st.chat_input("�������͂��Ă�������"):
�@���[�U�[���������͂����ۂ̏������L�q���Ă��܂��Bst.chat_input���g���āA���[�U�[���������͂��邽�߂̓��̓t�B�[���h��\�����Ă��܂��B���[�U�[���������͂���ƁA���̓��e��prompt�Ɋi�[����܂��B
with st.chat_message("user"):
st.write(prompt)
�@���[�U�[�����͂��������\�����邽�߂̃R�[�h�ł��Bst.chat_message���g���āA���[�U�[���������͂������Ƃ�����user��role���w�肵�Ă��܂��Bst.write���g���āA���[�U�[�����͂��������\�����Ă��܂��B
st.session_state.history.append({"role": "user", "content": prompt})
�@���[�U�[�̎�����`���b�g�����ɒlj����邽�߂ɁAst.session_state.history.append()���g���āAst.session_state.history�Ƀ��[�U�[�����͂��������lj����Ă��܂��Brole�ɂ�user���Acontent�ɂ̓��[�U�[�����͂���������w�肵�Ă��܂��B
response = search_logs(prompt)
�@���[�U�[�̎���ɑ��ĉ����邽�߂ɁA��قǒ�`����search_logs�����Ăяo���Ă��܂��Bprompt�ɂ̓��[�U�[�����͂������₪�n����A���̎���Ɋ�Â��Ċ֘A���郍�O���������A�����܂��B�������ꂽ��response�Ɋi�[����܂��B
with st.chat_message("assistant"):
st.write(response)
�@����������\�����邽�߂̃R�[�h�ł��Bst.chat_message���g���āA��\�����邽�߂�assistant�̃��[�����w�肵�Ă��܂��Bst.write���g���āA����������\�����Ă��܂��B
st.session_state.history.append({"role": "assistant", "content": response})
�@�����������`���b�g�����ɒlj����邽�߂̃R�[�h�ł��Bst.session_state.history.append()���g���āAst.session_state.history�ɐ���������lj����Ă��܂��Brole�ɂ�assistant���Acontent�ɂ͐����������w�肵�Ă��܂��B
�@�Ō�ɁA����Љ���A�v���P�[�V�����̓���m�F�菇��������܂��B
�@�܂��AGitHub���|�W�g�����N���[�����܂��B�^�[�~�i���ňȉ��̃R�}���h�����s���Ă��������B
$ git clone https://github.com/noriyukitakei/log-qa-rag.git $ cd log-qa-rag
�@�܂��AFluent Bit���N�����܂��Bfluent-bit�f�B���N�g���Ɉړ����A�ȉ��̃R�}���h�����s���Ă��������B
$ cd fluent-bit $ docker compose up -d
�@Gemini API�L�[���擾���A���ϐ��Ƃ��Đݒ肵�܂��B���|�W�g���̃��[�g�f�B���N�g����.env�t�@�C�����쐬���A�ȉ��̓��e��lj����Ă��������B
GEMINI_API_KEY="�擾����API�L�[�������ɓ\��t���Ă�������"
�@Gemini API�L�[�́uGoogle AI Studio�v����擾�ł��܂��B�ȉ���URL���Q�Ƃ��Ă��������B
�@�K�v��Python�p�b�P�[�W���C���X�g�[�����܂��B�^�[�~�i���ňȉ��̃R�}���h�����s���Ă��������B
$ pip install -r requirements.txt
�@���ɁA���O���WAPI���N�����܂��B�ȉ��̃R�}���h�����s���Ă��������B
$ python ingest.py
�@apps.log�Ɉȉ��̂悤�ȃ��O�G���g����lj����܂��BFluent Bit�������I�Ƀ��O�����m���A���O���WAPI�ɑ��M���܂��B
[2026-01-13 11:45:22 +0000] kernel: Out of memory: Kill process 4455 (mysql) score 500 due to large temporary table usage [2026-01-13 11:45:23 +0000] dbserver: ERROR: MySQL killed due to memory pressure after large query [2026-01-13 11:45:23 +0000] dbserver: ERROR: Service restarted after OOM kill [2026-01-14 16:55:12 +0000] systemd: Started Web Service. [2026-01-14 17:05:42 +0000] kernel: Memory pressure detected. [2026-01-14 17:06:03 +0000] kernel: Out of memory: Kill process 2345 (node) score 900 or sacrifice child [2026-01-14 17:06:04 +0000] kernel: Killed process 2345 (node) total-vm:123456kB, anon-rss:98765kB, file-rss:1234kB [2026-01-14 17:06:05 +0000] webapp: ERROR: Service restarted after OOM kill [2026-01-14 17:12:17 +0000] kernel: Memory cgroup out of memory: Kill process 6789 (python) score 750 [2026-01-14 18:22:33 +0000] systemd: The system is running low on memory. [2026-01-15 02:44:11 +0000] kernel: Out of memory: Kill process 9876 (backup) score 700 due to huge file buffering [2026-01-15 02:44:12 +0000] backup: WARN: Backup aborted due to insufficient memory
�@�`���b�g�A�v���P�[�V�������N�����܂��B�ȉ��̃R�}���h�����s���Ă��������B
$ streamlit run ui.py
�@�^�[�~�i���Ɉȉ��̂悤�ɕ\�����ꂽ��A�u���E�U�Ŏw�肳�ꂽURL�i�ʏ��http://localhost:8501�j�ɃA�N�Z�X���Ă��������B
You can now view your Streamlit app in your browser. Local URL: http://localhost:8501 Network URL: http://192.168.x.x:8501
�@�������͂���t�B�[���h�ɁA�ȉ��̂悤�Ȏ������͂��ē�����m�F���Ă��������B
2026�N1��13����11�����ɋN����OOM-Killer�̌����������āB
�@����ƁA�`���b�g�A�v���P�[�V�������֘A���郍�O���������A�����ĕ\�����܂��B�Ⴆ�A�ȉ��̂悤�ȉ������邱�Ƃ����҂���܂��i�}2�Q�Ɓj�B
��K�͂ȃN�G���ɂ��MySQL����ʂ̈ꎞ�e�[�u�����g�p���A�����������������������߂ł��B
�@����́A��3��ł��Љ��RAG�A�[�L�e�N�`�����x�[�X�ɁA�A�v���P�[�V�����J���菇����̓I�ɉ�����܂����BFluent Bit���g�������O���W����AFastAPI�ɂ�郍�O���WAPI�̎����AStreamlit�����p�����`���b�gUI�̍\�z�܂ŁA��A�̗����ʂ��āA����AI�����p�������O�����A�v���P�[�V�����̊J���v���Z�X���Љ�܂����B
�@����ɂ��AIT�C���t���^�p�S���҂͖c��ȃ��O�f�[�^����K�v�ȏ���v���ɒ��o�ł���悤�ɂȂ�A�^�p�����̑啝�Ȍ��オ���҂ł��܂��B
�@�{�A�ڂ͍��ŏI��ƂȂ�܂��B�u����AI�v�Ƃ����ƁA�����ł̓o�C�u�R�[�f�B���O�iVibe Coding�j��d�l�쓮�J���ȂǁA�R�[�h���������ɒ��ڂ��W�܂肪���ł��B�������A���̊��p�͈͂̓A�v���P�[�V�����J���ɂƂǂ܂炸�A�܂��ɖ����̉\�����߂Ă��܂��B
�@�{�A�ڂł�IT�C���t���\�z�E�^�p�̌���ɏœ_�ĂĂ��܂������A����AI�����p���邱�ƂŁA����܂Ől�̎�ōs���Ă������܂��܂ȋƖ��v���Z�X���������E���������邱�Ƃ��\�ł��B����A����AI�̐i���ƂƂ��ɁA�������̓�������Ɩ��݂̍�����傫���ς���Ă������Ƃł��傤�B
�@���́A����AI�̓C���^�[�l�b�g�o��ȗ��̑傫�ȃp���_�C���V�t�g�������炷�Z�p�ł���ƍl���Ă��܂��B��������p���邩�ǂ����ɂ���āA����̋Ɩ������⋣���͂ɑ傫�ȍ������܂��\��������܂��B�{�A�ڂł��Љ�����e���Q�l�ɂ��Ȃ���A����AI�����p�����Ɩ����P�̃A�C�f�A�����Ќ������Ă݂Ă��������B
�T�C�I�X�e�N�m���W�[�ɏ������AAzure��AI�̈�ł̃V�X�e���C���e�O���[�V������i�J���Ɏ��g�ރG���W�j�A�BMicrosoft MVP�Ƃ��ĔF�肳��AYouTube�Ȃǂ̃��f�B�A�Łu�킩��ݐ[���vAzure�̏�����X���M���Ă��鑼�A���M�����i���Ёw���E��₳����RAG�\�z�����x�j��ʂ��Ēm�����L�����L���Ă���B
�T�C�I�X�e�N�m���W�[�G���W�j�A�u���O
�T�C�I�X�e�N�m���W�[�G���W�j�A YouTube �`�����l��
Copyright © ITmedia, Inc. All Rights Reserved.
��IT eBook
�ҏW������̂��m�点