Faits: Faits: A. A._, ressortissant turc né le 2 mars 1964, a été arrêté le 30 mai 2003 et placé en détention préventive comme prévenu de crime manqué de meurtre, subsidiairement de lésions corporelles simples qualifiées, et de rixe. Il est mis en cause pour avoir participé, le 29 mai 2003 vers 22h40, à une rixe, sur la place de la Riponne, à Lausanne, au cours de laquelle il aurait notamment donné plusieurs coups de couteau à X._ et à Y._. En date du 18 juin 2003, le Juge d'instruction de l'arrondissement de Lausanne (ci-après: le Juge d'instruction) a rejeté une première demande de mise en liberté provisoire présentée par A._ en raison des nécessités de l'instruction. Le 3 juillet 2003, le Tribunal d'accusation du Tribunal cantonal du canton de Vaud (ci-après: le Tribunal d'accusation ou la cour cantonale) a confirmé cette décision sur recours du prévenu. Par ordonnance du 23 juillet 2003, le Juge d'instruction a rejeté une nouvelle demande de mise en liberté pour les mêmes motifs, relevant en particulier que plusieurs témoins dont l'identité avait été communiquée récemment devaient encore être entendus. Statuant par arrêt du 30 juillet 2003, le Tribunal d'accusation a rejeté le recours formé par A._ contre cette décision. Il a admis en substance qu'il existait des charges suffisantes à l'encontre du prévenu en se référant sur ce point aux considérants de l'arrêt rendu le 3 juillet 2003; il a tenu le risque de collusion pour établi, compte tenu du fait que plusieurs témoins devaient encore être interrogés pour tenter de déterminer les motifs de l'altercation et son déroulement, sans qu'A._ puisse se mettre d'accord avec eux ou les inciter à faire une fausse déposition. Il a enfin estimé que la détention subie à ce jour n'était pas excessive par rapport à la peine à laquelle le prévenu s'exposait eu égard à la gravité des actes qui lui étaient imputés. En date du 18 juin 2003, le Juge d'instruction de l'arrondissement de Lausanne (ci-après: le Juge d'instruction) a rejeté une première demande de mise en liberté provisoire présentée par A._ en raison des nécessités de l'instruction. Le 3 juillet 2003, le Tribunal d'accusation du Tribunal cantonal du canton de Vaud (ci-après: le Tribunal d'accusation ou la cour cantonale) a confirmé cette décision sur recours du prévenu. Par ordonnance du 23 juillet 2003, le Juge d'instruction a rejeté une nouvelle demande de mise en liberté pour les mêmes motifs, relevant en particulier que plusieurs témoins dont l'identité avait été communiquée récemment devaient encore être entendus. Statuant par arrêt du 30 juillet 2003, le Tribunal d'accusation a rejeté le recours formé par A._ contre cette décision. Il a admis en substance qu'il existait des charges suffisantes à l'encontre du prévenu en se référant sur ce point aux considérants de l'arrêt rendu le 3 juillet 2003; il a tenu le risque de collusion pour établi, compte tenu du fait que plusieurs témoins devaient encore être interrogés pour tenter de déterminer les motifs de l'altercation et son déroulement, sans qu'A._ puisse se mettre d'accord avec eux ou les inciter à faire une fausse déposition. Il a enfin estimé que la détention subie à ce jour n'était pas excessive par rapport à la peine à laquelle le prévenu s'exposait eu égard à la gravité des actes qui lui étaient imputés. B. Agissant par la voie du recours de droit public, A._ demande au Tribunal fédéral d'annuler cet arrêt et d'inviter les autorités cantonales à prononcer sa mise en liberté immédiate. Il reproche à la cour cantonale d'avoir fait une interprétation arbitraire de l'art. 59 du Code de procédure pénale vaudois (CPP vaud.) en le maintenant en détention préventive pour un risque de collusion inexistant. Il requiert l'assistance judiciaire. Le Tribunal d'accusation se réfère aux considérants de son arrêt. Le Procureur général du canton de Vaud conclut au rejet du recours. Le Juge d'instruction de l'arrondissement de Lausanne n'a pas déposé d'observations. A._ a répliqué. 